23-02-19, 06:10 PM
السلام عليكم اخوتي الكرام
لأول مرة اتعامل مع الاكسل وقد قمت بكتابة كود تصدير البيانات من الداتا غرايد فيو في فيجوال بيسك الى ملف اكسل
الكود يعمل (على كيفه)مرة يقوم بالعمل يشكل جيد واحيانا لايقوم بعملية التصدير واعيد الضغط على زر التصدير مرة ثانية ليعمل واحيانا اضطر الى ضغطه ثلاث مرات لان عملية التصدير تفشل .. ومن اجل حل المشكلة مؤقتا كتبت ضمن الكود
جملة GOTO التي لاأحبها وهي تجبر الكود على الاعادة من الاول حتى يتم التصدير
وبسبب قلة خبرتي مع الاكسل ارفق لكم
الكود ليصار الى تصحيح الخلل مشكورين
اتعامل مع VB2008 و Office 2003
كود :
Private Sub Btn_ExToExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_ExToExcel.Click
If dgv_table.Rows.Count = 0 Then
Exit Sub
Else
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
gg:
Try
Dim xlApp As New Application
Dim excelworkBook As Microsoft.Office.Interop.Excel.Workbook = xlApp.Workbooks.Add
Dim excelWorksheet As Microsoft.Office.Interop.Excel.Worksheet = CType(excelworkBook.Worksheets(1), Worksheet)
xlApp.Visible = False
Dim currCol As Integer = 1
excelWorksheet.Cells.Select()
excelWorksheet.Cells.Delete()
For iC As Integer = 0 To dgv_table.Columns.Count - 1
If dgv_table.Columns(iC).Visible = True Then
excelWorksheet.Cells(1, currCol).Value = dgv_table.Columns(iC).HeaderText
currCol += 1
End If
Next
For i As Integer = 0 To dgv_table.RowCount - 1
currCol = 1
For j As Integer = 0 To dgv_table.Columns.Count - 1
If dgv_table.Columns(j).Visible = True Then
excelWorksheet.Cells(i + 2, currCol).value = dgv_table.Rows(i).Cells(j).FormattedValue
currCol += 1
End If
Next
Next
excelWorksheet.Rows("1:1").Font.FontStyle = "Normal"
excelWorksheet.Rows("1:1").Font.Size = 10
excelWorksheet.Cells.Columns.AutoFit()
excelWorksheet.Cells.Select()
excelWorksheet.Cells.EntireColumn.AutoFit()
excelWorksheet.Cells(1, 1).Select()
xlApp.Visible = True
Catch ex As Exception
GoTo gg ' اضطررت لاستخدام هذه العبارة وضحكت من نفسي على استخدامها
'MsgBox("Export Excel Error " & ex.Message)
MsgBox("فشلت عملية التصدير حاول مرة ثانية")
Finally
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
End Try
End If
End Sub