导出到Excel c#出错

本文关键字:出错 Excel | 更新日期: 2023-09-27 18:13:32

我得到一个错误,当我导出Excel到c#,我找不到我的代码是错误的,我的问题的解决方案

错误:

类型的未处理异常"System.Runtime.InteropServices。COMException' occurred in gest .exe

附加信息:Índice inválido。(结果:0 x8002000b (DISP_E_BADINDEX))

代码运行时出现错误

// Add a workbook.
oBook = oExcel_12.Workbooks.Add(oMissing);
// Get worksheets collection 
oSheetsColl = oExcel_12.Worksheets;
// Get Worksheet "Sheet1"
oSheet = (Excel_12.Worksheet)oSheetsColl.get_Item("Sheet1");

这是我所有的代码

 public static void ExportDataGridViewTo_Excel12(DataGridView itemDataGridView)
 {
        Excel_12.Application oExcel_12 = null;                //Excel_12 Application
        Excel_12.Workbook oBook = null;                       // Excel_12 Workbook
        Excel_12.Sheets oSheetsColl = null;                   // Excel_12 Worksheets collection
        Excel_12.Worksheet oSheet = null;                     // Excel_12 Worksheet
        Excel_12.Range oRange = null;                         // Cell or Range in worksheet
        Object oMissing = System.Reflection.Missing.Value;
        // Create an instance of Excel_12.
        oExcel_12 = new Excel_12.Application();
        // Make Excel_12 visible to the user.
        oExcel_12.Visible = true;
        // Set the UserControl property so Excel_12 won't shut down.
        oExcel_12.UserControl = true;
        // System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
        // Add a workbook.
        oBook = oExcel_12.Workbooks.Add(oMissing);
        // Get worksheets collection 
        oSheetsColl = oExcel_12.Worksheets;
        // Get Worksheet "Sheet1"
        oSheet = (Excel_12.Worksheet)oSheetsColl.get_Item("Sheet1");
        // Export titles
        for (int j = 0; j < itemDataGridView.Columns.Count; j++)
        {
            oRange = (Excel_12.Range)oSheet.Cells[1, j + 1];
            oRange.Value2 = itemDataGridView.Columns[j].HeaderText;
        }
        // Export data
        for (int i = 0; i < itemDataGridView.Rows.Count - 1; i++)
        {
            for (int j = 0; j < itemDataGridView.Columns.Count; j++)
            {
                oRange = (Excel_12.Range)oSheet.Cells[i + 2, j + 1];
                oRange.Value2 = itemDataGridView[j, i].Value;
            }
        }
        // Release the variables.
        //oBook.Close(false, oMissing, oMissing);
        oBook = null;
        //oExcel_12.Quit();
        oExcel_12 = null;
        // Collect garbage.
        GC.Collect();
    }

导出到Excel c#出错

这个工作适合我…

oSheet = oBook.Worksheets.get_Item(index);

由于您从Excel中获得了非英语异常文本,我假设没有名为"Sheet1"的工作表,而是具有本地化名称。您必须使用本地化的名称,或者使用工作表索引(应该以1开头)而不是工作表名称,这更好。