我在.NET 4.0(C#)中打开一个Excel文件。我正在使用12.0版本的互操作。 Excel文件是xls(旧)。我可以打开它就好了,但是workbook.close()导致了一个COM Exception,周围没有真正的细节。
oExcel = new Application();
oExcel.Visible = true;
oExcel.DisplayAlerts = false;
oBooks = oExcel.Workbooks;
oBook = null;
oBook = oBooks.Open(finalFilename);
oBook.Close(); // this gives COM Exception
任何想法我做错了什么?
这是有趣的事情。我没有保存这个。在它完成它需要做的事情之后,我将我需要的数据拉出来并存储它,我刚刚复制的工作簿就可以消失了。
答案 0 :(得分:1)
Excel.Application objExcel = new Excel.Application();
Excel.Workbook objWorkbook = (Excel.Workbook)(objExcel.Workbooks._Open(@"D:\a.xls", true,
false, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value));
你的代码......
objWorkbook.Save();
objWorkbook.Close(true, @"C:\Documents and Settings\Administrator\b.xls", true);
objExcel.Quit();
答案 1 :(得分:0)
根据我的经验,刚刚打开和关闭的错误很可能表明该文件存在问题。 Excel 桌面非常宽容,可以优雅地处理文件的任何问题。该文件可能在Excel中看起来很好并且没有任何迹象表明出现了问题。
您可以尝试在Excel中重新保存文件。如果仍然无效,请尝试创建新的电子表格并复制旧文件中的内容。
答案 2 :(得分:0)
Workbook.Close似乎不包含没有参数的方法Close。
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.close.aspx
方法签名: void关闭( 对象SaveChanges, 对象文件名, 对象RouteWorkbook )
object missing = Type.Missing;
object noSave = false;
oBook.Close(noSave, missing, missing);