HRESULT:获取工作表的 UsedRange 时为 0x800401A8
HRESULT: 0x800401A8 when getting UsedRange of Worksheet
我正在尝试打开 Excel Sheet,获取 UsedRange 并循环遍历它。
这已经工作了一次,但后来我遇到了异常
COM object that has been separated from its underlying RCW cannot be
used
使用后
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet);
请注意,异常也在下面的代码中不断出现,而不是在实际发布时出现。我第一次这样做,从那以后我无法让下面的代码工作。可悲的是,我不知道他究竟在哪条线上坠毁了。
因为异常不断出现,我重新启动了我的电脑,从那时起,当我试图访问 UsedRange 时,我得到了一个异常:
System.Runtime.InteropServices.COMException: "Ausnahme von HRESULT:
0x800401A8"
代码如下:
using Excel = Microsoft.Office.Interop.Excel;
....
var xlApp = new Excel.Application();
var xlWorkBook = xlApp.Workbooks.Open(file);
Excel.Worksheet xlWorkSheet = xlWorkBook.Sheets["Tabelle1"];
for (int i = 1; i < xlWorkSheet.UsedRange.Rows.Count; i++)
{ ...
这一次有效,所以我认为 COM 对象仍然无法正常工作。 (就像第一个例外)
我该怎么做才能让它恢复正常?
发生的事情是我不小心关闭了工作簿并在 foor 循环中退出了应用程序,而不是在它之后。我不小心把它放在了 }.
前面
for (int i = 1; i < xlWorkSheet.UsedRange.Rows.Count; i++)
{
...
xlWorkBook.Close(false);
xlApp.Quit();
}
当然,这应该在循环之后进行。
您无法访问不再打开的工作簿中的变量。
因此,如果出现错误,请检查工作簿是否确实确实打开。
真丢脸。
我正在尝试打开 Excel Sheet,获取 UsedRange 并循环遍历它。
这已经工作了一次,但后来我遇到了异常
COM object that has been separated from its underlying RCW cannot be used
使用后
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet);
请注意,异常也在下面的代码中不断出现,而不是在实际发布时出现。我第一次这样做,从那以后我无法让下面的代码工作。可悲的是,我不知道他究竟在哪条线上坠毁了。
因为异常不断出现,我重新启动了我的电脑,从那时起,当我试图访问 UsedRange 时,我得到了一个异常:
System.Runtime.InteropServices.COMException: "Ausnahme von HRESULT: 0x800401A8"
代码如下:
using Excel = Microsoft.Office.Interop.Excel;
....
var xlApp = new Excel.Application();
var xlWorkBook = xlApp.Workbooks.Open(file);
Excel.Worksheet xlWorkSheet = xlWorkBook.Sheets["Tabelle1"];
for (int i = 1; i < xlWorkSheet.UsedRange.Rows.Count; i++)
{ ...
这一次有效,所以我认为 COM 对象仍然无法正常工作。 (就像第一个例外)
我该怎么做才能让它恢复正常?
发生的事情是我不小心关闭了工作簿并在 foor 循环中退出了应用程序,而不是在它之后。我不小心把它放在了 }.
前面for (int i = 1; i < xlWorkSheet.UsedRange.Rows.Count; i++)
{
...
xlWorkBook.Close(false);
xlApp.Quit();
}
当然,这应该在循环之后进行。 您无法访问不再打开的工作簿中的变量。
因此,如果出现错误,请检查工作簿是否确实确实打开。
真丢脸。