我目前正在開發一個項目,用於遍歷excel文檔並使用C#將數據插入到數據庫中。C#:從xls文檔讀取數據
該項目的相關數據是:
- Excel工作表的頂部,我不在乎有14行。 (有時15,參見下文俄羅斯/西伯利亞)
- 的數據由姓名分組爲2列(日期和值),如:
表1
USA China Russia
Date Value Date Value Siberia
1/1/09 4.3654 1/1/09 2.7456 Date Value
1/2/09 3.5545 1/3/09 9.3214 2/5/09 0.2454
1/3/09 3.2322 1/21/09 5.2234 2/6/09 0.5557
- 名稱我需要獲取的是直接在「日期」之上列出的任何一個。
- 我只關心數據庫中沒有的數據。在解析每個列集之前,我將從數據庫中獲取任何給定名稱的最大日期,並在其之前或之前跳過任何內容。
- 不保證列將以固定順序排列或間隔不變。
- 我不希望所有名稱的數據,而只是在收集文件之前放在一個列表中的數據。
我目前的計劃是這樣的:
- 對於每一列,如果日期欄是在第16行,該名稱保存,因爲它上面的15行的值,檢查數據庫的最後日期對於該名稱,只在日期大於獲取日期的地方插入數據。
- 如果日期字段是在排17,做同樣的事情,但在18
- 啓動for循環的每一行如果名字不在列表中,跳過列。如果是,請確保抓住旁邊的列以獲取必要的值。
我的問題是:
- 我目前正在使用從Codeplex上的ExcelDataReader(http://www.codeplex.com/ExcelDataReader)。這隻喜歡類似csv的工作表,這個項目沒有。
- 我不知道任何替代Excel閱讀器。
- 據我所知,直接FileStream遍歷此文件只能逐行,而不是逐列。
要有人還在讀書,感謝您的時間。有關如何繼續的建議?請確保解決方案可以遍歷每列,而不是每行。
而且,請不要擔心數據庫的東西,或先於遍歷名稱的列表。
附錄:我最終想要得到的是某種類型的表格,我可以用一個嵌套循環遍歷,使得以列爲中心的遍歷更加容易。由於靠近紙張頂部(14行以上)有太多垃圾,因此大多數簡單的解決方案都不可行。
我期待嘗試koogra和nexcel。我會讓你知道他們是如何爲我工作的。 – 2009-12-16 22:47:40
我一直在生產系統中使用koogra一年多,每天解析六個excel文件,它確實工作得很好,但是它的文檔不存在。如果您遇到困難,請與我們聯繫。 – Chris 2009-12-16 22:50:13
+1 Chris,POI通過IKVM不是不明智的選擇,因爲它首次出現。這是一個非常強大的圖書館。 – 2009-12-17 01:46:59