簡體   English   中英

C#使用OleDbDataAdapter讀取Excel文件時出錯

[英]C# Error reading Excel file with OleDbDataAdapter

我正在嘗試使用OleDbDataAdapter讀取“ .xlsx”文件。 在回答之前,請先閱讀文章的結尾。 這是我正在使用的代碼:

    private DataTable ExtractDataFromFile(string fileName)
    {
        DataTable sheetData = new DataTable();
        using (OleDbConnection conn = this.returnConnection(fileName))
        {
            try{
                conn.Open();
                OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [Sheet1$]", conn);
                sheetAdapter.Fill(sheetData);
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
                Console.ReadLine();
            }
        }
        return sheetData;
    }

    private OleDbConnection returnConnection(string fileName)
    {
        return new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0;");
    }

但是我遇到了一個特殊的錯誤。 我必須查詢的Excel文件已由客戶端提供給我,當我嘗試打開它們時出現以下錯誤

External table is not in the expected format

這里有個要點:我注意到,如果我打開一個Excel文件並手動保存一次並關閉文件,那么我可以使用程序查詢該文件!

確定要使用Microsoft Office創建xlsx文件嗎? 該文件可能是打開的xml文檔,但可能不是MS Office創建的,因此MS oledbadapter無法讀取它。 如果您打開並保存它,則它可能會將其轉換為打開xml的MS版本,然后oledbadapter可以讀取它。

您可以查看DocumentFormat.OpenXml以讀取xlsx文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM