在C#中关闭错误打开Excel文件

时间:2013-09-06 16:57:17

标签: c# .net excel automation

我在.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

任何想法我做错了什么?

这是有趣的事情。我没有保存这个。在它完成它需要做的事情之后,我将我需要的数据拉出来并存储它,我刚刚复制的工作簿就可以消失了。

3 个答案:

答案 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);