0

エラーが発生します:

ファイル形式またはファイル拡張子が無効なため、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 が存在するためですか??

4

2 に答える 2

0

さらにテストした結果、私の推測が正しいことが判明しました。そのため、ワークシートで OleDBConnection を開くと、Microsoft.InterOp と同時に開くことはできません。

于 2013-10-17T17:53:41.110 に答える
0

3 番目のパラメーターWorkbooks.Openは、作業を読み取り専用モードで開くかどうかを指定します。相互運用接続が読み取り専用の場合は、その値を に設定してみてくださいtrue。OleDb 接続を読み取り専用にできる場合はReadOnly=true;、接続文字列に追加します。

于 2013-10-17T17:58:24.157 に答える