2010-08-31 79 views
9

我需要使用Excel 2007文件來讀取數據。對於這一個是做的最好的方法:哪一個是最好的OLEDB或Excel對象或數據庫

  1. 使用OLEDB提供
  2. 的Excel互操作對象
  3. 轉儲Excel數據的數據庫,使用步驟

親切指導我的選擇。

+1

你的問題還不太清楚。閱讀關於在此處詢問SO問題:http://tinyurl.com/so-hints – Oded 2010-08-31 10:53:03

回答

17

這裏是我的意見:

1。使用OLEDB提供程序

只適合您的需要,如果您擁有簡單,統一的結構化表格。例如,如果您必須提取任何單元格格式信息,它不會有多大幫助。 Jet引擎的錯誤「行類型猜測」算法可能會使這種方法幾乎無法使用。但是如果數據類型可以從每個表的前幾行中唯一標識出來,這種方法可能就足夠了。 Pro:速度很快,即使在沒有安裝MS Excel的機器上也能正常運行。

2。 Excel互操作對象

可能非常慢,特別是與選項1相比,您需要安裝MS Excel。但是,您可以完全訪問Excel的對象模型,您可以提取存儲在Excel文件中的幾乎所有信息(例如:格式化信息,顏色,框架等),並且您的工作表可以像您想要的那樣結構複雜。

3。將Excel數據轉儲到數據庫並使用過程

取決於您考慮的是哪種數據庫轉儲,以及是否有數據庫系統。如果您想要訪問MS,則會再次在內部使用Jet引擎,具有與上述方法1相同的優點和缺點。

其他選項:

4。編寫Excel VBA宏以讀取需要的數據並將其寫入文本文件。從C#程序讀取文本文件。 Pro:比方法2快得多,在訪問元信息時具有相同的靈活性。 Con:你必須在VBA部分和C#部分分割你的程序。你需要在你的機器上使用MS Excel。

5。爲此任務使用第三方庫/組件。這個工作有很多圖書館,免費和商業圖書館。只需詢問Google,或在SO上搜索即可。很多這些庫不需要機器上的MS Excel,如果您要將數據作爲服務器進程的一部分提取,它們通常是最佳選擇。

+0

另外,您無法在未安裝Office的計算機上使用Excel Interop對象 – BornToCode 2014-06-25 11:39:35

+0

@BornToCode:感謝您的評論,我相應地編輯了我的答案。 – 2014-06-25 12:27:26

2

無論您如何提問,選項1和2幾乎都是痛苦的練習。

如果您可以使用SSIS將數據移動到數據庫中,並且由於其他要求而適合您的需求,那麼這也是一個不錯的選擇。

但是,首選選項通常是針對Excel 2007及更高版本使用Office Open XML。這並沒有讓你頭痛的是Option 2,也沒有任何問題與猜測行類型,因爲你有選項1.

隨着更仔細的問題,你可以得到一個更好的答案,雖然。

相關問題