تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] تصدير الداتاجريد فيو للاكسيل
#1
السلام عليكم ورحمة الله بركاتة 

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

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

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

كود :
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
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو


الردود في هذا الموضوع
تصدير الداتاجريد فيو للاكسيل - بواسطة احمد 2021 - 15-08-21, 12:49 AM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم