【问题标题】:WIndows 10 Excel 2016 C# hresult 0x800a03ec error on save asWindows 10 Excel 2016 C# hresult 0x800a03ec 错误另存为
【发布时间】:2017-07-08 15:58:28
【问题描述】:

我有 Windows 10 操作系统、Excel 2016 并使用 Visual Studio 2017。

我使用的是 Microsoft Excel 16.0 对象库,版本 1.9。

我想在 Excel 文件中保存 50 行 2 列。

我在 saveas 方法上收到错误 hresult '0x800a03ec'。

到目前为止,我已经看到超过 25 个以上的链接,这些链接以前与相同的错误相关联,但没有任何线索。

这是我的代码:

            object misValue = System.Reflection.Missing.Value;
            var excel = new Application();

            // for making Excel visible
            excel.Visible = false;
            excel.DisplayAlerts = false;

            // Creation a new Workbook
            var excelWorkBook = excel.Workbooks.Add(Type.Missing);
            // Work sheet
            var excelSheet = (Worksheet)excelWorkBook.ActiveSheet;
            excelSheet.Name = "xxxxx";

            excelSheet.Cells[1][1] = "head1";
            excelSheet.Cells[1][2] = "head2";

            for (int i = 0; i < list.Count; i++)
            {
                excelSheet.Cells[i + 2][1] = list[i].xxx;
                excelSheet.Cells[i + 2][2] = list[i].yyy;
            }

            excelSheet.SaveAs(@"E:\data.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
                Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue);
            excel.Quit();

            Marshal.ReleaseComObject(excelSheet);
            Marshal.ReleaseComObject(excelWorkBook);
            Marshal.ReleaseComObject(excel);

需要帮助。

编辑:

1) xls 或 xlsx,它们都不起作用。

2)根据之前找到的一些答案,我也尝试了这个: 控制台根目录 -> 计算机 -> DCOM 配置 -> Microsoft Excel 应用程序 -> 未找到,三重检查。

请有人尝试在您的机器上应用相同的场景,如果您能找到答案,请告诉我。

【问题讨论】:

标签: c# windows-10 visual-studio-2017 excel-interop excel-2016


【解决方案1】:

我没有你的确切版本,我使用 VS2015 和 Excel 15 对象并得到完全相同的异常。

我尝试了您的程序的简化版本(因为我没有您的 list 课程详细信息)。我可以通过一个简单的更改来保存文件。

而不是

excelSheet.SaveAs(@"E:\data.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
            Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue);

我不得不使用

excelSheet.SaveAs(@"E:\data.xlsx")

我的 for 循环是:

        for (int i = 0; i < 1000; i++)
        {
            excelSheet.Cells[i + 2][1] = "xxx" + i;
            excelSheet.Cells[i + 2][2] = "yyy" + i;
        }

我能够保存 xlsx 并在 Excel 中成功打开它。

你可以试试简单的SaveAs 看看你是否得到了不同的异常?

如果您希望摆脱 Office 自动化,我强烈建议您使用 EPPlus

【讨论】:

    【解决方案2】:

    我经常使用 C# 和 Excel,以及 Excel VBA,我所有的 HRESULT 类型的错误都与 Excel 无效公式有关。 在您的情况下,您的列表可能包含以 =+- 开头的文本:Excel 可能会将其解释为无效的 excel 公式。 (例如 =-bt 会导致 #NAME? 并会导致 HRESULT 以及错误后的任何文本。 尝试将这些单元格格式化为文本,然后应用您的 50 行,在这种情况下它应该可以工作。

    【讨论】:

      【解决方案3】:

      这发生在我继承的旧 ASP 应用程序中,但与 Microsoft.Office.Interop 库的任何交互都会发生错误,但仅在部署到 IIS 时才会发生。它在调试模式下工作正常。我认为必须在 IIS 上进行一些配置才能使其像在 VS 的调试模式下创建的 IIS Express 实例一样工作。仍在尝试避免重构代码以使用 OpenXML。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多