HRESULTexception:0x800A03EC保存Excel文件时出错

我正在button的点击事件保存数据,下面是代码:

using Excel = Microsoft.Office.Interop.Excel; Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; Excel.Range range; object misValue = System.Reflection.Missing.Value; String st = System.IO.Directory.GetCurrentDirectory() + "\\A.xlsx"; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open(st, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); int i = 6; for (i = 6; i < 10; i++) { xlWorkBook.SaveAs(st, XlFileFormat.xlExcel9795, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlShared, misValue, misValue, misValue, misValue, misValue); MessageBox.Show(xlWorkSheet.get_Range("L" + @i, "L" + @i).Value2.ToString()); } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); 

当我保存它,它给了我错误:

HRESULT:0x800A03EC保存Excel文件时出错

据我所知在保存从HRESULT Excel文件exception:0x800A03EC方法SaveAs的参数是错误引发的exception。 请检查你的论点:

 xlWorkBook.SaveAs(st1, XlFileFormat.xlExcel9795, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlShared, misValue, misValue, misValue, misValue, misValue); 

检查单元格的索引,从[1,1] sheet.cells [0,0]开始会抛出com错误。

@Sebastian是正确的,因为你正在调用SaveAs四次,保存到同一位置而不closures。 这是行不通的,你首先需要把这个移出循环。 但是仔细看看你的代码,你没有改变工作簿中的任何东西,所以不需要保存,如果你改变了一些东西,你最好调用Save而不是SaveAs。 除此之外 ,当您打开工作簿时,指定ReadOnly为true,所以试图以任何方式调用save都不起作用。

最后,如果使用> = C#4,则可以使用可选参数,因此所有这些misValue都是不必要的。 我整理你的代码如下:

 using Excel = Microsoft.Office.Interop.Excel; var st = System.IO.Directory.GetCurrentDirectory() + "\\A.xlsx"; var xlApp = new Excel.Application(); var xlWorkBook = xlApp.Workbooks.Open(st); var xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.Item[1]; for (var i = 6; i < 10; i++) { MessageBox.Show(xlWorkSheet.Range["L" + @i, "L" + @i].Value2.ToString()); } //make some changes here xlWorkBook.Save(); xlWorkBook.Close(); xlApp.Quit(); 

我知道这个线程是老的,但这可能对某个人有帮助。 我有同样的问题,并调用工作簿上的Activate ()函数为我修复:

 yourWorkBookObject.Activate()