【问题标题】:Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT) when opening xlsx fileHRESULT 异常:打开 xlsx 文件时出现 0x80010105 (RPC_E_SERVERFAULT)
【发布时间】:2020-04-17 18:13:56
【问题描述】:

我有一个让我发疯的异常。

当我尝试以这种方式打开 .xlsx 文件时

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
string v = "path\File.xlsx";
Workbook wb = app.Workbooks.Open(v); //This triggers the exception
app.Visible = true;
Worksheet sh = wb.Sheets[1];

我有这个例外

Error: System.Runtime.InteropServices.COMException (0x80010105): Server launches an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))
at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object 
at MainWindow.loadFile(String v) in MainWindow.cs:line 139

谁能给我一个解决方案,为什么会这样?

Ps:我正在使用 Interop 库打开 Excel。

编辑:显然如果我设置 app.Visible = true; 可以,但我不希望 Excel 窗口出现。

【问题讨论】:

  • 什么是v?您可以发布该变量的确切内容吗?
  • v 是文件的路径
  • 听起来像是 Excel 本身通过 COM 返回的错误。如果您在 Excel 中手动打开文件会怎样?
  • 没什么异常,如果我手动打开文件,它就会打开
  • 你有没有为这个问题找到一个更优雅的解决方案?

标签: c# excel interop


【解决方案1】:
 appExcel.Visible = true;
            classeur = appExcel.Workbooks.Open(DB_Path, 0, false, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            appExcel.Visible = false;

【讨论】:

  • 会检查它是否有效,因为我仍然有这个问题。
  • 我投了赞成票,因为它对我有用 - 但我根本不喜欢这个解决方案......为什么这样有效?我想知道它可以通过其他方式完成吗?
  • 我在 2019 年 1 月更新 windows 10 补丁 1709 后出现此错误。早期的 Excel 可以在没有设置 visible true 的情况下工作。
【解决方案2】:

我仍然没有找到解决方案,但是当我使用 abdosup 的解决方法时,Excel 窗口会显示一小会儿,并且用户在打开工作簿时按下 ctrl+v 键加载可能会崩溃。

请看:

appExcel.Visible = true;
OldExcelTop = appExcel.Top;
appExcel.Top = 10000;
appExcel.OnKey("^v", "");
classeur = appExcel.Workbooks.Open(DB_Path, 0, false, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
appExcel.Visible = false;
appExcel.OnKey("^v", Type.Missing);
appExcel.Top = OldExcelTop ;

我在 Disable copy(ctrl+c), paste(ctrl+v),cut(ctrl+x) in excel

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多