1
我想檢索Excel工作簿中的工作表的列表,但我收回的集合有表單名稱和數據列ID,這似乎被稱爲原定xlsx xml中的'Defined Names'。你能告訴我如何只返回工作表名稱?OleDb - 檢索Excel工作表名稱還檢索定義的名稱
我正在使用的代碼是沿着線:
OleDbConnection connExcel = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;"
+ @"Data Source=" + FilePath + ";"
+ @"Extended Properties=""Excel 8.0;HDR=Yes;""");
OleDbCommand cmdExcel = new OleDbCommand();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable testTable = connExcel.GetSchema("Tables");
所產生的TestTable的集合的內容包含TABLE_NAME下的條目:
- DATA1
- DATA2
- DATA3
- DATA4
- DATA5
- 工作表Sheet1 $
- TEST1 -TEST2
- TESTHKEY
- TESTKEYS
- TESTVKEY
他們都有TABLE的TABLE_TYPE。
與上述對應的原始工作簿將有1個包含5列的工作表,第一行將包含一個標題。我只對Sheet1 $條目感興趣。電子表格是在Excel 2010中創建的 ,我試圖在用C#編寫的ASP.NET 4應用程序中處理它。有可能,工作表名稱可能已被更改,所以我不能保證它始終是Sheet1 $。
感謝您的回覆,作爲後期處理方法適合我! – Mike
經過少許挖掘,我發現當通過從SAP導出數據創建電子表格時,會自動創建定義的名稱,結果輸出中的每個數據列似乎都有一個元素。 元素分組在元素中的組後面的父元素下。 GetSchema方法將它們全部選爲「表」。您可以通過選擇功能區中的公式,然後在「定義的名稱」部分中選擇「名稱管理器」來刪除Excel中定義的名稱。 –
Mike
我有類似的問題,我得到更多的工作表比實際,我沒有任何定義的名稱。如果我的工作表名稱是「abc」,那麼我有另一個名爲「abc $」的工作表。任何人都可以解釋爲什麼它的行爲如此嗎?我試圖通過sql導入導入該文件,並且還顯示了額外的工作表,我可以在打開excel文件時看到它們。 –