منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] تصدير الداتاجريد فيو للاكسيل - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] تصدير الداتاجريد فيو للاكسيل (/showthread.php?tid=39307)



تصدير الداتاجريد فيو للاكسيل - احمد 2021 - 15-08-21

السلام عليكم ورحمة الله بركاتة 

لدي فنكشن اقوم بتصدير البيانات من الداتاجريد فيو الي الاكسيل من خلالها 

تعمل جيد ا .
المشكلة اني لا اريد تصدير كل الاعمدة اريد تحديد اعمدة معينة لكي يتم تصديرها لاكسيل وليس كل الاعمدة 

حاولت استبعاد اعمدة بتجاهل رقم العمود مثلا العمود رقم اربعة ولم تفلح الطريقة معي ..

كود :
Public Sub ExportToExcel(ByVal DGV As DataGridView, Optional ByVal OpenDialog As Boolean = False, Optional ByVal SameColumnsWidth As Boolean = True)
       Dim FlNm As String = ""
       Dim sv As New SaveFileDialog
       sv.FileName = "Excel.xls"
       sv.Filter = "|*.xls"
       If sv.ShowDialog <> DialogResult.OK Then Exit Sub
       FlNm = sv.FileName
       Dim fs As New StreamWriter(FlNm, False)
       With fs
           .WriteLine("<?xml version=""1.0""?>")
           .WriteLine("<?mso-application progid=""Excel.Sheet""?>")
           .WriteLine("<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
           .WriteLine("  <Styles>")
           .WriteLine("  <Style ss:ID=""hdr"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""11"" ss:Bold=""1""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""ksg"">")
           .WriteLine("  <Alignment ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders/>")
           .WriteLine("  <Font ss:FontName=""Calibri""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""isi"">")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Bottom"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""10""/>")
           .WriteLine("  </Style>")
           .WriteLine("  </Styles>")
           .WriteLine("  <Worksheet ss:Name=""sheet1"">")
           .WriteLine("  <Table>")
           If SameColumnsWidth Then
               For i = 0 To DGV.ColumnCount - 1
  If i > 4 Then Continue For'
                   .WriteLine("  <Column ss:Width=""" & DGV.Columns(i).Width & """/>")

               Next
           End If
           .WriteLine("  <Row ss:StyleID=""ksg"">")
           For i As Integer = 0 To DGV.Columns.Count - 1
  If i > 4 Then Continue For'


               Application.DoEvents()
                   .WriteLine("  <Cell ss:StyleID=""hdr"">")
                   .WriteLine("    <Data ss:Type=""String"">{0}</Data>", DGV.Columns.Item(i).HeaderText)
                   .WriteLine("  </Cell>")

           Next
           .WriteLine("  </Row>")
           
For intRow As Integer = 0 To DGV.RowCount - 1
             

 Application.DoEvents()

               .WriteLine("  <Row ss:StyleID=""ksg"" ss:utoFitHeight =""0"">")
             

 For intCol As Integer = 0 To DGV.Columns.Count - 1
  If intCol > 4 Then Continue For'                  

 Application.DoEvents()



                   .WriteLine("  <Cell ss:StyleID=""isi"">")


                   .WriteLine("  <Data ss:Type=""String"">{0}</Data>", DGV.Item(intCol, intRow).Value.ToString)

                           .WriteLine("  </Cell>")

               Next


               .WriteLine("  </Row>")
           Next
           .WriteLine("  </Table>")
           .WriteLine("  </Worksheet>")
           .WriteLine("</Workbook>")
           .Close()
           If OpenDialog Then
               Dim msg1
               msg1 = MsgBox("The file has been saved successfully Do you want to open the file after saving ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Successfully exported")
               If msg1 = vbNo Then Exit Sub
               Process.Start(FlNm)
           End If
       End With
   End Sub



RE: تصدير الداتاجريد فيو للاكسيل - ابراهيم ايبو - 15-08-21

السلام عليكم ورحمة الله وبركاته
اخي الكريم بالنسبة لكودك لا اعرف شيئ عنه لكن لدي فكرة قد لاتعجبك 
بالعادة الداتاغرايد تعرض كل الحقول اثناء تعبئتها اخفي الحقول التي لاتريدها في التصدير وذلك بأن تضع كود تحميل جديد في بوتون تضغط عليه عندما تريد التصدير ثم تكون النتائج في الداتاغرايد كما تريد بعدها قم بالتصدير (مجرد فكرة) الى ان يتم الحل الذي تريد من قبل احد الاعضاء


RE: تصدير الداتاجريد فيو للاكسيل - احمد 2021 - 15-08-21

(15-08-21, 12:49 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم بالنسبة لكودك لا اعرف شيئ عنه لكن لدي فكرة قد لاتعجبك 
بالعادة الداتاغرايد تعرض كل الحقول اثناء تعبئتها اخفي الحقول التي لاتريدها في التصدير وذلك بأن تضع كود تحميل جديد في بوتون تضغط عليه عندما تريد التصدير ثم تكون النتائج في الداتاغرايد كما تريد بعدها قم بالتصدير (مجرد فكرة) الى ان يتم الحل الذي تريد من قبل احد الاعضاء

اشكرك علي الرد ولكن اريد طريقة مباشرة بتمرير العمود الغير مراد اظهارة للفنكشن مبارشرتا


RE: تصدير الداتاجريد فيو للاكسيل - يونس علي - 18-08-21

السلام عليكم ورحمة الله وبركاتة وبعد 
لقد قمت بتعديل بسيط بلكود



كود :
Private Sub ExportToExcel_click(sender As Object, e As EventArgs)

       Dim dgv As New DataGridView

       dgv = Me.DGVUSERS

       dgv.Columns(1).Visible = False

       ExportToExcel(dgv, True)

   End Sub


وهذا الكود بعد التعديل 


كود :
Sub ExportToExcel(ByVal DGV As DataGridView, Optional ByVal OpenDialog As Boolean = False, Optional ByVal SameColumnsWidth As Boolean = True)
       Dim FlNm As String = ""
       Dim sv As New SaveFileDialog
       sv.FileName = "Excel.xls"
       sv.Filter = "|*.xls"
       If sv.ShowDialog <> DialogResult.OK Then Exit Sub
       FlNm = sv.FileName
       Dim fs As New StreamWriter(FlNm, False)
       With fs
           .WriteLine("<?xml version=""1.0""?>")
           .WriteLine("<?mso-application progid=""Excel.Sheet""?>")
           .WriteLine("<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
           .WriteLine("  <Styles>")
           .WriteLine("  <Style ss:ID=""hdr"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""11"" ss:Bold=""1""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""ksg"">")
           .WriteLine("  <Alignment ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders/>")
           .WriteLine("  <Font ss:FontName=""Calibri""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""isi"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center"" ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Bottom"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""10""/>")
           .WriteLine("  </Style>")
           .WriteLine("  </Styles>")
           .WriteLine("  <Worksheet ss:Name=""sheet1"">")
           .WriteLine("  <Table>")
           If SameColumnsWidth Then
               For i = 0 To DGV.ColumnCount - 1
                   If i > 4 Then Continue For '
                   If DGV.Columns(i).Visible = True Then


                       .WriteLine("  <Column ss:AutoFitWidth=""0"" ss:Width=""" & DGV.Columns(i).Width & """ />") '
                   End If
               Next
           End If
           .WriteLine("  <Row ss:StyleID=""ksg"">")
           For i As Integer = 0 To DGV.Columns.Count - 1
               If i > 4 Then Continue For '

               If DGV.Columns(i).Visible = True Then

                   Application.DoEvents()
                   .WriteLine("  <Cell ss:StyleID=""hdr"">")
                   .WriteLine("    <Data ss:Type=""String"">{0}</Data>", DGV.Columns.Item(i).HeaderText)
                   .WriteLine("  </Cell>")

               End If

           Next
           .WriteLine("  </Row>")

           For intRow As Integer = 0 To DGV.RowCount - 1

               Application.DoEvents()

               .WriteLine("  <Row ss:StyleID=""ksg"" ss:utoFitHeight =""0"">")

               For intCol As Integer = 0 To DGV.Columns.Count - 1
                   If intCol > 4 Then Continue For '                  

                   Application.DoEvents()

                   If DGV.Columns(intCol).Visible = True Then

                       .WriteLine("  <Cell ss:StyleID=""isi"">")

                       .WriteLine("  <Data ss:Type=""String"">{0}</Data>", DGV.Item(intCol, intRow).Value.ToString)

                       .WriteLine("  </Cell>")

                   End If
               Next
               .WriteLine("  </Row>")
           Next
           .WriteLine("  </Table>")
           .WriteLine("  </Worksheet>")
           .WriteLine("</Workbook>")
           .Close()
           If OpenDialog Then
               Dim msg1
               msg1 = MsgBox("The file has been saved successfully Do you want to open the file after saving ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Successfully exported")
               If msg1 = vbNo Then Exit Sub
               Process.Start(FlNm)
           End If
       End With
   End Sub



RE: تصدير الداتاجريد فيو للاكسيل - احمد 2021 - 18-08-21

(18-08-21, 12:20 AM)يونس علي كتب :
السلام عليكم ورحمة الله وبركاتة وبعد 
لقد قمت بتعديل بسيط بلكود



كود :
Private Sub ExportToExcel_click(sender As Object, e As EventArgs)

       Dim dgv As New DataGridView

       dgv = Me.DGVUSERS

       dgv.Columns(1).Visible = False

       ExportToExcel(dgv, True)

   End Sub


وهذا الكود بعد التعديل 


كود :
Sub ExportToExcel(ByVal DGV As DataGridView, Optional ByVal OpenDialog As Boolean = False, Optional ByVal SameColumnsWidth As Boolean = True)
       Dim FlNm As String = ""
       Dim sv As New SaveFileDialog
       sv.FileName = "Excel.xls"
       sv.Filter = "|*.xls"
       If sv.ShowDialog <> DialogResult.OK Then Exit Sub
       FlNm = sv.FileName
       Dim fs As New StreamWriter(FlNm, False)
       With fs
           .WriteLine("<?xml version=""1.0""?>")
           .WriteLine("<?mso-application progid=""Excel.Sheet""?>")
           .WriteLine("<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
           .WriteLine("  <Styles>")
           .WriteLine("  <Style ss:ID=""hdr"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""11"" ss:Bold=""1""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""ksg"">")
           .WriteLine("  <Alignment ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders/>")
           .WriteLine("  <Font ss:FontName=""Calibri""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""isi"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center"" ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Bottom"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""10""/>")
           .WriteLine("  </Style>")
           .WriteLine("  </Styles>")
           .WriteLine("  <Worksheet ss:Name=""sheet1"">")
           .WriteLine("  <Table>")
           If SameColumnsWidth Then
               For i = 0 To DGV.ColumnCount - 1
                   If i > 4 Then Continue For '
                   If DGV.Columns(i).Visible = True Then


                       .WriteLine("  <Column ss:AutoFitWidth=""0"" ss:Width=""" & DGV.Columns(i).Width & """ />") '
                   End If
               Next
           End If
           .WriteLine("  <Row ss:StyleID=""ksg"">")
           For i As Integer = 0 To DGV.Columns.Count - 1
               If i > 4 Then Continue For '

               If DGV.Columns(i).Visible = True Then

                   Application.DoEvents()
                   .WriteLine("  <Cell ss:StyleID=""hdr"">")
                   .WriteLine("    <Data ss:Type=""String"">{0}</Data>", DGV.Columns.Item(i).HeaderText)
                   .WriteLine("  </Cell>")

               End If

           Next
           .WriteLine("  </Row>")

           For intRow As Integer = 0 To DGV.RowCount - 1

               Application.DoEvents()

               .WriteLine("  <Row ss:StyleID=""ksg"" ss:utoFitHeight =""0"">")

               For intCol As Integer = 0 To DGV.Columns.Count - 1
                   If intCol > 4 Then Continue For '                  

                   Application.DoEvents()

                   If DGV.Columns(intCol).Visible = True Then

                       .WriteLine("  <Cell ss:StyleID=""isi"">")

                       .WriteLine("  <Data ss:Type=""String"">{0}</Data>", DGV.Item(intCol, intRow).Value.ToString)

                       .WriteLine("  </Cell>")

                   End If
               Next
               .WriteLine("  </Row>")
           Next
           .WriteLine("  </Table>")
           .WriteLine("  </Worksheet>")
           .WriteLine("</Workbook>")
           .Close()
           If OpenDialog Then
               Dim msg1
               msg1 = MsgBox("The file has been saved successfully Do you want to open the file after saving ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Successfully exported")
               If msg1 = vbNo Then Exit Sub
               Process.Start(FlNm)
           End If
       End With
   End Sub

فعلا حل المشكلة مكنتش بفكر في الحل دة نهائي الف شكر ..


RE: تصدير الداتاجريد فيو للاكسيل - يونس علي - 18-08-21

(18-08-21, 04:54 PM)احمد 2021 كتب :
(18-08-21, 12:20 AM)يونس علي كتب :
السلام عليكم ورحمة الله وبركاتة وبعد 
لقد قمت بتعديل بسيط بلكود



كود :
Private Sub ExportToExcel_click(sender As Object, e As EventArgs)

       Dim dgv As New DataGridView

       dgv = Me.DGVUSERS

       dgv.Columns(1).Visible = False

       ExportToExcel(dgv, True)

   End Sub


وهذا الكود بعد التعديل 


كود :
Sub ExportToExcel(ByVal DGV As DataGridView, Optional ByVal OpenDialog As Boolean = False, Optional ByVal SameColumnsWidth As Boolean = True)
       Dim FlNm As String = ""
       Dim sv As New SaveFileDialog
       sv.FileName = "Excel.xls"
       sv.Filter = "|*.xls"
       If sv.ShowDialog <> DialogResult.OK Then Exit Sub
       FlNm = sv.FileName
       Dim fs As New StreamWriter(FlNm, False)
       With fs
           .WriteLine("<?xml version=""1.0""?>")
           .WriteLine("<?mso-application progid=""Excel.Sheet""?>")
           .WriteLine("<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet"">")
           .WriteLine("  <Styles>")
           .WriteLine("  <Style ss:ID=""hdr"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""11"" ss:Bold=""1""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""ksg"">")
           .WriteLine("  <Alignment ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders/>")
           .WriteLine("  <Font ss:FontName=""Calibri""/>") 'SET FONT
           .WriteLine("  </Style>")
           .WriteLine("  <Style ss:ID=""isi"">")
           .WriteLine("  <Alignment ss:Horizontal=""Center"" ss:Vertical=""Bottom""/>")
           .WriteLine("  <Borders>")
           .WriteLine("    <Border ss:Position=""Bottom"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Left"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Right"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("    <Border ss:Position=""Top"" ss:LineStyle=""Continuous"" ss:Weight=""1""/>")
           .WriteLine("  </Borders>")
           .WriteLine("  <Font ss:FontName=""Calibri"" ss:Size=""10""/>")
           .WriteLine("  </Style>")
           .WriteLine("  </Styles>")
           .WriteLine("  <Worksheet ss:Name=""sheet1"">")
           .WriteLine("  <Table>")
           If SameColumnsWidth Then
               For i = 0 To DGV.ColumnCount - 1
                   If i > 4 Then Continue For '
                   If DGV.Columns(i).Visible = True Then


                       .WriteLine("  <Column ss:AutoFitWidth=""0"" ss:Width=""" & DGV.Columns(i).Width & """ />") '
                   End If
               Next
           End If
           .WriteLine("  <Row ss:StyleID=""ksg"">")
           For i As Integer = 0 To DGV.Columns.Count - 1
               If i > 4 Then Continue For '

               If DGV.Columns(i).Visible = True Then

                   Application.DoEvents()
                   .WriteLine("  <Cell ss:StyleID=""hdr"">")
                   .WriteLine("    <Data ss:Type=""String"">{0}</Data>", DGV.Columns.Item(i).HeaderText)
                   .WriteLine("  </Cell>")

               End If

           Next
           .WriteLine("  </Row>")

           For intRow As Integer = 0 To DGV.RowCount - 1

               Application.DoEvents()

               .WriteLine("  <Row ss:StyleID=""ksg"" ss:utoFitHeight =""0"">")

               For intCol As Integer = 0 To DGV.Columns.Count - 1
                   If intCol > 4 Then Continue For '                  

                   Application.DoEvents()

                   If DGV.Columns(intCol).Visible = True Then

                       .WriteLine("  <Cell ss:StyleID=""isi"">")

                       .WriteLine("  <Data ss:Type=""String"">{0}</Data>", DGV.Item(intCol, intRow).Value.ToString)

                       .WriteLine("  </Cell>")

                   End If
               Next
               .WriteLine("  </Row>")
           Next
           .WriteLine("  </Table>")
           .WriteLine("  </Worksheet>")
           .WriteLine("</Workbook>")
           .Close()
           If OpenDialog Then
               Dim msg1
               msg1 = MsgBox("The file has been saved successfully Do you want to open the file after saving ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question, "Successfully exported")
               If msg1 = vbNo Then Exit Sub
               Process.Start(FlNm)
           End If
       End With
   End Sub

فعلا حل المشكلة مكنتش بفكر في الحل دة نهائي الف شكر ..


لا شكر على واجب