منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مشكلة عند تحويل البيانات من الداتاقريدفيو الى الإكسل - نسخة قابلة للطباعة

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



مشكلة عند تحويل البيانات من الداتاقريدفيو الى الإكسل - جيولوجي مبتدئ - 09-10-21

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

يظهر لي هذا الخطأ عن نقل البيانات من الداتاقريدفيو إلى الإكسل
: Invalid index. (استثناء من HRESULT: 0x8002000B (DISP_E_BADINDEX))

والكود المستخدم 


Imports Microsoft.Office.Interop.Excel

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For s As Integer = 1 To 10
            DataGridView1.Rows.Add(s, "bader" & s)
        Next
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'Try

        Dim exlapp As New Application
        Dim exlworkbook As Workbook
        Dim exlworksheet As Worksheet
        Dim misvalue As Object = System.Reflection.Missing.Value

        exlworkbook = exlapp.Workbooks.Add(misvalue)
        exlworksheet = exlworkbook.Sheets("Sheet1")

        For i As Integer = 0 To DataGridView1.RowCount - 2
            For j As Integer = 0 To DataGridView1.ColumnCount - 1
                exlworksheet.Cells(i + 1, j + 1) = DataGridView1.Rows(1).Cells(j).Value.ToString


            Next
        Next

        sfd.Filter = "Excel files|*.xlsx|Excel 2003|*.xls"
        If sfd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
            exlworksheet.SaveAs(sfd.FileName)
        End If

        exlworkbook.Close()
        exlapp.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlapp)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlworkbook)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlworksheet)
        exlapp = Nothing
        exlworkbook = Nothing
        exlworksheet = Nothing

        Process.Start(sfd.FileName)

 End Sub



   
لكم جزيل الشكر 
دمتم بود



RE: مشكلة عند تحويل البيانات من الداتاقريدفيو الى الإكسل - Jounior_P - 09-10-21

بالنسبة لي الكود يعمل بكفاءة
شرط وجود لعمدة في الداتا جريد

انظر المرفق


RE: مشكلة عند تحويل البيانات من الداتاقريدفيو الى الإكسل - جيولوجي مبتدئ - 09-10-21

السلام عليكم  
مشكور أخي على اهتمامك وردك السريع 
للأسف نفس المشكلة  علماً  أني استخدم فيجوال بيسك 2013 والأكسل 2019  


دمتم بود 

لكم جزيل الشكر


RE: مشكلة عند تحويل البيانات من الداتاقريدفيو الى الإكسل - ahmed4 - 09-10-21

(09-10-21, 01:32 AM)جيولوجي مبتدئ كتب : السلام عليكم ورحمة الله وبركاته 

يظهر لي هذا الخطأ عن نقل البيانات من الداتاقريدفيو إلى الإكسل
: Invalid index. (استثناء من HRESULT: 0x8002000B (DISP_E_BADINDEX))

والكود المستخدم 


Imports Microsoft.Office.Interop.Excel

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For s As Integer = 1 To 10
            DataGridView1.Rows.Add(s, "bader" & s)
        Next
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'Try

        Dim exlapp As New Application
        Dim exlworkbook As Workbook
        Dim exlworksheet As Worksheet
        Dim misvalue As Object = System.Reflection.Missing.Value

        exlworkbook = exlapp.Workbooks.Add(misvalue)
        exlworksheet = exlworkbook.Sheets("Sheet1")

        For i As Integer = 0 To DataGridView1.RowCount - 2
            For j As Integer = 0 To DataGridView1.ColumnCount - 1
                exlworksheet.Cells(i + 1, j + 1) = DataGridView1.Rows(1).Cells(j).Value.ToString


            Next
        Next

        sfd.Filter = "Excel files|*.xlsx|Excel 2003|*.xls"
        If sfd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
            exlworksheet.SaveAs(sfd.FileName)
        End If

        exlworkbook.Close()
        exlapp.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlapp)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlworkbook)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(exlworksheet)
        exlapp = Nothing
        exlworkbook = Nothing
        exlworksheet = Nothing

        Process.Start(sfd.FileName)

 End Sub



   
لكم جزيل الشكر 
دمتم بود

ياليت حددت الخطا حصل عن اي سطر

لكن يمكن الخطا اسم Sheet1
جرب تعدله بالتالي
exlworksheet = exlworkbook.Sheets(1)

اذا استمر الخطا ححد السطر اللي وقف عنده وظهرت رساله الخطا