簡體   English   中英

Microsoft Jet數據庫引擎找不到對象“ Sheet1 $ _”

[英]The Microsoft Jet database engine could not find the object 'Sheet1$_'

我正在從Excel文件讀取數據。 當我閱讀普通的Excel文件時,它可以正常工作,但是當我閱讀具有以下所示列的Excel文件時,找不到工作表並給出異常-

Microsoft Jet數據庫引擎找不到對象“ Sheet1 $ _”。 確保對象存在,並且正確拼寫了它的名稱和路徑名。 在此處輸入圖片說明

我閱讀Excel的代碼是-

  private static DataTable getExcelData(string ExcelPath)
    {
        OleDbConnection con;
        string connectionString;
        string[] pathArray = ExcelPath.Split('.');
        var Extention = pathArray[pathArray.Length - 1];
        if (Extention == "xlsx")
            //read a 2007 file
            connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                ExcelPath + ";Extended Properties=\"Excel 8.0;HDR=YES;\"";
        else
            //read a 97-2003 file
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                ExcelPath + ";Extended Properties=Excel 8.0;";

        con = new OleDbConnection(connectionString);

        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
        DataTable dbSchema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null);
        var firstSheetName = dbSchema.Rows[0]["TABLE_NAME"];
        OleDbDataAdapter cmd = new OleDbDataAdapter("select * from [" + firstSheetName + "] Where NOT [Event Code]=''", con);
        DataSet ds = new DataSet();
        cmd.Fill(ds);
        con.Close();
        return ds.Tables[0];
    }

}

我必須獲取星期一,星期二等內的所有列。

GetOleDbSchemaTable還可以在Excel文件中返回隱藏表:通常,類似Sheet1$_的名稱表示在Sheet1$上應用過濾器時創建的隱藏表。

您需要更改代碼:搜索以$結尾的表以設置firstSheetName

請注意, OLEDB不會保留Excel中的工作表順序

另請注意,您需要執行以下操作以讀取具有多行標題的excel文件:

  • 在連接字符串的EXTENDED PROPERTIES中設置HDR=No
  • 指定列名稱並在OleDbCommand中選擇范圍,以跳過前兩行

例如:

SELECT [F1] AS Location,
    [F2] AS EmpId,
    [F3] AS EmpName,
    [F4] AS MondayShift,
    [F5] AS Monday15Min,
    [F6] AS Monday30Min,
    [F7] AS Monday15Min2
FROM [Sheet1$A3:G]

暫無
暫無

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

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