15-08-21, 12:49 AM
السلام عليكم ورحمة الله بركاتة
لدي فنكشن اقوم بتصدير البيانات من الداتاجريد فيو الي الاكسيل من خلالها
تعمل جيد ا .
المشكلة اني لا اريد تصدير كل الاعمدة اريد تحديد اعمدة معينة لكي يتم تصديرها لاكسيل وليس كل الاعمدة
حاولت استبعاد اعمدة بتجاهل رقم العمود مثلا العمود رقم اربعة ولم تفلح الطريقة معي ..
لدي فنكشن اقوم بتصدير البيانات من الداتاجريد فيو الي الاكسيل من خلالها
تعمل جيد ا .
المشكلة اني لا اريد تصدير كل الاعمدة اريد تحديد اعمدة معينة لكي يتم تصديرها لاكسيل وليس كل الاعمدة
حاولت استبعاد اعمدة بتجاهل رقم العمود مثلا العمود رقم اربعة ولم تفلح الطريقة معي ..
كود :
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