我尝试了几乎所有我在StackOverflow上找到的东西,但我的代码不断抛出以下错误:
带删除()的行上的HRESULT的异常:0x800A03EC
。我希望你能帮助我。
这是我当前的代码
var xlApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook book =
xlApp.Workbooks.Open(File_name);
xlApp.DisplayAlerts = false;
Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2];
worksheet.Delete();
book.Worksheets.Add();
xlApp.DisplayAlerts = true;
book.Save();
book.Close();
xlApp.Quit();
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(xlApp);
这是我试过的其他代码:
oXL.DisplayAlerts = false;
worksheet = (Excel.Worksheet)theWorkbook.Sheets[i];
((Excel.Worksheet)theWorkbook.Sheets[i]).Delete();
oXL.DisplayAlerts = true;
oWB.Save();
oWB.Close(false, missing, missing);
oSheet = null;
oWB = null;
oXL.Quit();
还有一些变化
Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbook oWB;
Excel.Worksheet oSheet;
Excel.Workbooks oMWB;
我正在使用此参考:
using Excel = Microsoft.Office.Interop.Excel;
答案 0 :(得分:1)
使用Excel Interop库时,我多次遇到此错误。这个问题的主要原因(一般的COM异常),大多数情况下,Excel试图找到你要求的东西,但Excel无法找到它。看到这个answer,它对我帮助很大。
阅读以下内容:
Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2];
worksheet.Delete();
我认为您正在尝试删除不存在的工作表。检查您的Excel文档。
答案 1 :(得分:1)
我只是犯了最愚蠢的错误..... excel文件是一个共享文件,这就是为什么我无法删除它..
很抱歉犯了这么愚蠢的错误,感谢所有试图帮助我的人!
答案 2 :(得分:0)
HRESULT:0x800A03EC是一个未知的COM错误。这通常发生在Excel抛出一些错误,因为您的输入或参数错误。
此示例提供了msdn:Programmatically Deleting Worksheets from Workbooks
((Excel.Worksheet)this.Application.ActiveWorkbook.Sheets[4]).Delete();
请尝试下一步:
Excel.Worksheet worksheet = (Excel.Worksheet)book.Sheets[2];
worksheet.Delete();
而不是:
Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2];
worksheet.Delete();
答案 3 :(得分:0)
试试这个:
xlApp.DisplayAlerts = false;
Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2];
worksheet.Delete();
xlApp.DisplayAlerts = true;
同样重要的是要记住,互操作从1开始计数,而不是从0开始计数。因此删除项目[0]或删除唯一的工作表会引发异常。如果您打算删除[2]工作表,第三个将取代它。所以一定要从最后一个删除到第一个。
答案 4 :(得分:0)
这是我用来删除excel表的代码
<form id="aproveForm" class="smart-form" novalidate="novalidate">
<form id="mulpayment">
并使用此
this.setState(prevState => ({ item_details:
{
...prevState.item_details,
[next_item_key]: next_item_value
}
}));