0

我在 .NET 4.0 (C#) 中打开一个 Excel 文件。我正在使用 12.0 版本的互操作。Excel 文件是 xls(旧)。我可以很好地打开它,但是 workbook.close() 会导致 COM 异常,周围没有真正的细节。

oExcel = new Application();
oExcel.Visible = true;
oExcel.DisplayAlerts = false;

oBooks = oExcel.Workbooks;
oBook = null;
oBook = oBooks.Open(finalFilename);

oBook.Close();   // this gives COM Exception

任何想法我做错了什么?

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

4

3 回答 3

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();
于 2013-09-06T17:13:08.980 回答
0

以我的经验,打开和关闭时的错误很可能表明文件存在问题。Excel桌面非常宽容,可以优雅地处理文件的任何问题。该文件在 Excel 中可能看起来和工作正常,而不会给出任何错误的迹象。

您可以尝试在 Excel 中重新保存文件。如果它仍然不起作用,请尝试创建一个新的电子表格并从旧文件中复制内容。

于 2013-09-06T17:05:38.860 回答
0

Workbook.Close 似乎不包含没有参数的方法 Close。

http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.close.aspx

方法签名:void Close(Object SaveChanges, Object Filename, Object RouteWorkbook)

        object missing = Type.Missing;
        object noSave = false;
        oBook.Close(noSave, missing, missing);
于 2013-09-06T17:07:53.337 回答