Workbooks.Open vs OLEDBConnection无法打开工作簿

时间:2013-10-17 16:34:11

标签: c# excel oledbconnection

我收到错误:

  

Excel无法打开文件'FILE.xlsx',因为文件格式或   文件扩展名无效。验证文件尚未存在   已损坏且文件扩展名与文件格式匹配。

我怀疑原因是因为在File.xlsx上我有一个OleDBConnection使用它,后来在相同的代码中我称之为该文件的Interop函数Open of Excel。有人可以证实我的理论吗?

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?

2 个答案:

答案 0 :(得分:0)

经过进一步测试,结果证明我的猜测是正确的。因此,无法与Microsoft.InterOp

同时打开在工作表上打开OleDBConnection

答案 1 :(得分:0)

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