تصدير الداتاجريد فيو للاكسيل - احمد 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
فعلا حل المشكلة مكنتش بفكر في الحل دة نهائي الف شكر ..
لا شكر على واجب
|