【问题标题】:Export from DataGridView to Excel error Exception from HRESULT: 0x8002000B从 DataGridView 导出到 Excel 错误 HRESULT 异常:0x8002000B
【发布时间】:2021-07-23 09:05:34
【问题描述】:

我正在尝试将数据从 DataGridView 导出到 Excel 文件,DataGridView 包含带有日期的单元格,并且 Int 一直在工作,直到我添加了另外 2 列(1 列带有文本,1 列带有日期)。

现在我得到错误:

System.Runtime.InteropServices.COMException: '无效索引。 (来自 HRESULT 的异常:0x8002000B (DISP_E_BADINDEX))'

这是我的代码:

        Microsoft.Office.Interop.Excel._Application app = new 
        Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
        Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
        worksheet = workbook.Sheets["Sheet1"];
        worksheet = workbook.ActiveSheet;
        worksheet.Name = "Raport";

        for (int i = 1; i < tabinregrap.Columns.Count + 1; i++)
        {
            worksheet.Cells[1, i] = tabinregrap.Columns[i - 1].HeaderText;
        }

        for (int i = 0; i < tabinregrap.Rows.Count; i++)
        {
            for (int j = 0; j < tabinregrap.Columns.Count; j++)
            {
                worksheet.Cells[i + 2, j + 1] = tabinregrap.Rows[i].Cells[j].Value.ToString();
            }
        }

        var saveFileDialoge = new SaveFileDialog();
        saveFileDialoge.FileName = "output";
        saveFileDialoge.DefaultExt = ".xlsx";

        if (saveFileDialoge.ShowDialog() == DialogResult.OK)
        {
            workbook.SaveAs(saveFileDialoge.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

        }

        app.Quit();

【问题讨论】:

  • 使用发布的代码,我无法重现您描述的错误。您确定错误来自发布的代码吗?如果是这样……哪一行会引发该错误?
  • 你好不是来自应用程序进入中断模式的行,会出现错误,当按下继续应用程序关闭时
  • 正如我之前评论的那样,发布的代码按预期工作,没有错误。你说你最近添加了一些列……把它们拿出来看看错误是否消失。我只是说错误似乎不是来自发布的代码。据我所知,向网格添加更多列不会有任何区别。我这样做了,它仍然按预期工作,没有错误。
  • 如果愿意使用名为 SpreadSheetLight 的免费第三方 Excel 库,我可以发布一个解决方案,该解决方案从 DataGridView 导出到 Excel 并格式化日期单元格,并且能够写入新工作表或附加到现有工作表。
  • 关于“安装新版本”,这是一个可能再次发生的问题,通常不会发生在使用 Open XML 的库中,例如 EPPlus 和 SpreadSheetLight

标签: c#


【解决方案1】:

问题是 Microsoft Office 我必须安装新版本

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多