2009-02-04 93 views
2

我當前的要求是接收一個Excel電子表格,用戶每週更新一次並能夠查詢某個字段的文檔。Linq到XML和Excel與OledbConnection之間的速度差異?

從現在開始,我將所有Excel(2007)數據全部推送到一個xml文件中(僅當它們上載文件時,然後使用xml),然後保存所有需要的數據(而不是電子表格中的所有列)用於通過Linq-to-XML進行查詢;注意xml文件比excel小。

現在我的問題是,與Linq和OledbConnection查詢XML文件之間有任何性能差異?我只是增加另一個不必要的步驟? 我想後續的問題是,是否值得它的易用性繼續推動到XML。

該文件有大約1000行。

回答

4

對於每週只做一次的事情,我不認爲需要執行任何優化。相反,您應該專注於您和將來維護解決方案的人員的維護和理解。

無論使用哪種解決方案,您找到最自然的:-)

1

您不能使用SqlConnection訪問Excel電子表格。更可能的是,您正在使用OleDbConnection或OdbcConnection。

話雖這麼說,我會,使用的OleDbConnection訪問Excel工作表會更快,因爲你是本地處理數據,但只有這樣,才能知道使用是將數據使用System.Diagnostics命名空間中的Stopwatch類或使用分析工具自己測試它。

如果你有大量的數據需要處理,你可能還想考慮把它放在SQL Server中,然後查詢它(當然,取決於查詢的比例和保存數據所花費的時間) 。

+0

woops,我解決了這個問題 - 這個xml文件也是原生的。我將用秒錶進行測試。 – naspinski 2009-02-06 14:01:48

1

我認爲重要的是要討論你對文件進行什麼類型的查詢。我不得不相信,使用LINQ查詢會比oledbconnection更容易查詢,儘管我從經驗中談論的比其他任何事情都多。

2

據我瞭解事物的性能方面代表這樣的訪問Excel數據。

從最快到最慢
1.自定義的第三方供應商軟件直接在Excel文件類型上使用C++。
2.如果數據類型需要,使用模式文件的OleDbConnection方法將Excel視爲平面文件數據庫。
3. Linq 2 XML方法僅用於使用Excel 2007文件格式讀取/寫入數據的優越方法。
4.使用OOXML SDK和可選的第三方XML庫進行直接XML數據操作。僅限於Excel 2007文件格式。
5.使用Object [,]數組讀取單元格區域(使用.Value2 prop),並將Object [,]數組再次傳遞到單元格區域(再次.Value2道具)以寫入數據。
6.使用.Cells(x,y)和.Offset(x,y)prop訪問器分別更新和讀取單元格。

+1

爲了進一步回答你的問題。雖然使用OleDbConnection而不是Linq2XML會帶來小的整體性能優勢,但Linq代碼將更易於維護並且易於編寫。此外,OleDbConnection代碼更脆弱,只有當數據區域是靜態時纔是非常好的。對於經常更新的動態數據,編程可能非常具有挑戰性。 – 2010-12-21 05:04:26

相關問題