0

我收到错误:

Excel 无法打开文件“FILE.xlsx”,因为文件格式或文件扩展名无效。验证文件没有损坏并且文件扩展名与文件格式匹配。

我怀疑原因是因为在 File.xlsx 上我有一个 OleDBConnection 使用它,并且稍后在同一代码中我在该文件上调用 Excel 的互操作函数 Open。有人可以证实我的理论吗?

public ExcelWorkbook(string file)
    {                       
        fileName = file;

        using (var workbookConnection = new OleDbConnection(String.Format(Resource.ExcelConnectionString, file)))
        {
            workbookConnection.Open();
            tabNames = GetDataTabsName(workbookConnection);
            foreach (string tabName in tabNames)
            {
                var newExcelTab = new ExcelTab(workbookConnection, file, tabName);
                excelTabs.Add(tabName, newExcelTab);
            }
        }
    }

然后我的函数 GetDataTabsName(workbookConnection);

private List<string> GetDataTabsName(OleDbConnection workbookConnection)
    {
        var tabsName = new List<string>();
        var tabName = "";

       Excel.Application excelApp = new Excel.Application();
        excelApp.Visible = false;
        Excel.Workbook workbook = excelApp.Workbooks.Open(workbookConnection.DataSource, 0, false, 5, "", "", false, 
            Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
....some more code

Open 在这里失败了……我最好的猜测是因为该文件上存在 OleDBConnection ?

4

2 回答 2

0

经过进一步测试,事实证明我的猜测是正确的。因此,在工作表上打开 OleDBConnection 不能与 Microsoft.InterOp 同时打开

于 2013-10-17T17:53:41.110 回答
0

第三个参数Workbooks.Open指定是否应以只读模式打开作品。如果互操作连接仅用于读取,请尝试将该值设置为true. 如果 OleDb 连接可以是只读的,请添加ReadOnly=true;到您的连接字符串。

于 2013-10-17T17:58:24.157 回答