在Excel中删除工作表

我几乎所有的东西,我可以在这里findStackOverflow,但我的代码不断抛出以下错误:

来自HRESULT的exception:0x800A03EC

与delete()一致。 我希望你们能帮助我。

这是我目前的代码

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; 

使用Excel Interop库时,我多次遇到此错误。 这个问题的主要原因(一个普通的COMexception),大多数时候,Excel试图find你所要求的东西,但Excel无法find它。 看到这个答案 ,它帮了我很多。

读这些行:

 Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2]; worksheet.Delete(); 

我认为你正试图删除一个不存在的工作表。 检查你的Excel文件。

我只是犯了最愚蠢的错误….. excel文件是一个共享文件,这就是为什么我不能删除它..

对不起,犯这样一个愚蠢的错误,并感谢所有谁试图帮助我!

HRESULT:0x800A03EC是未知的COM错误。 当Excel因为input或参数错误而抛出一些错误时,通常会发生这种情况。

本示例提供了msdn:以编程方式从工作簿中删除工作表

 ((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(); 

尝试这个:

 xlApp.DisplayAlerts = false; Excel.Worksheet worksheet = (Excel.Worksheet)book.Worksheets[2]; worksheet.Delete(); xlApp.DisplayAlerts = true; 

同样重要的是要记住,interop开始从1开始计数,而不是从0开始计数。所以删除item [0]或删除唯一的表将会引发你一个exception。 如果你打算删除[2]工作表,第三个将取代它的位置。 所以一定要从最后一个删除到第一个。

这是我用来删除Excel表格的代码

  Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); if (xlApp == null) { return; } xlApp.DisplayAlerts = false; string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Sample.xlsx"; Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Excel.Sheets worksheets = xlWorkBook.Worksheets; worksheets[4].Delete(); worksheets[3].Delete(); xlWorkBook.Save(); xlWorkBook.Close(); releaseObject(worksheets); releaseObject(xlWorkBook); releaseObject(xlApp); 

并使用这个

 static void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; throw ex; } finally { GC.Collect(); } }