来自HRESULT的异常:0x800A03EC保存Excel文件时出错

时间:2013-03-24 10:46:32

标签: c# excel file

我在按钮的点击事件中保存数据,下面是代码:

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文件时出错

5 个答案:

答案 0 :(得分:2)

正如我在Saving an Excel File Exception from HRESULT: 0x800A03EC所理解的那样,当方法SaveAs的参数错误时引发异常。请查看您的论点:

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

@Sebastian是正确的,因为您正在调用SaveAs四次,保存到同一位置而不关闭。这不会起作用,首先需要将其移出循环。但是更仔细地查看你的代码,你不会改变工作簿中的任何内容,因此不需要保存,如果你确实改变了某些内容,你最好调用保存而不是SaveAs。除此之外,当您打开工作簿时,您将 ReadOnly 指定为true,因此尝试以任何容量调用save都无法正常工作。

最后,如果您使用&gt; = 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();

答案 3 :(得分:1)

我知道这个帖子已经老了,但这可能对某人有所帮助。我有同样的问题,并在工作簿上调用Activate()函数为我修复了它:

yourWorkBookObject.Activate() 

答案 4 :(得分:0)

我在保存 Excel 文件行时遇到了同样的错误。

xlWorkBook.SaveAs(st);

我发现文件夹名称已被某人更改,导致我无法将文件保存到“st”的给定文件位置。我希望这有助于有人先检查。