我在按钮的点击事件中保存数据,下面是代码:
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文件时出错
答案 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”的给定文件位置。我希望这有助于有人先检查。