2009-11-02 46 views
1

我有一個excel文件,其中包含我需要推入我的SQL Server數據庫的聯繫人列表(大約10 k)。因此,我正在使用visual studio 2008編寫一個.net Windows程序來讀取這些文件,爲每個聯繫人生成隨機密碼,然後將這些信息推送到我的SQL Server數據庫中。如何讀取,編輯和寫入xls文件,然後導出到SQL Server

在2003年很容易處理excel文件,但現在我的電腦有office 2007,事情似乎發生了變化。我在挖掘Microsoft.Office.Interop.Excel,但它似乎比以前複雜得多。

回答

0

我將採取ETL方法是:

  1. 創建一個SSIS包將數據導入到SQL Server中
  2. 驗證一個臨時表,並清理所有導入的數據
  3. 寫SQL腳本隨機密碼爲每個導入的行,然後調用從SSIS包腳本/存儲過程作爲一個SQL任務
  4. 插入到實際的數據表,從臨時表

如果這是需要一遍又一遍地完成的事情,我會將包保存到SQL Server中,並從我的C#程序調用它。

0

我不確定這是否會對您有所幫助,但也許SSIS(SQL Server Integration Services)可以幫助您。

除此之外,您可以嘗試在Excel中執行所需的操作時在Excel中錄製宏,並且在完成操作後,可以查看錄製的宏(ALT + F8)並將其「轉換」爲你的.NET代碼。

只是一個建議。

2

如果是一筆一筆的交易,您可以將excel文件稍微格式化,將其導入並訪問數據庫,然後將其推回到任何您想要的數據庫。

如果你必須在.net中完成,你可以使用SQL通過ODBC打開一個excel文件......這有點脆弱,但我過去曾用它成功過。

使用這樣的事情在Excel連接字符串:
提供商= Microsoft.Jet.OLEDB.4.0;數據源= C:\ MyExcel.xls;擴展屬性=「Excel的8.0; HDR =是; IMEX = 1" ;

工作表和命名部分是表名稱...... HDR =是表示第一行包含字段的名稱。我承認這有點奇怪。 :)

+0

是的,我正在挖這篇文章http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx 但後來我得到一個錯誤'Microsoft.Jet。 OLEDB.4.0提供程序未在本地計算機上註冊。 我試過註冊dll文件,其他所有東西,但它仍然發生,我不知道是否因爲我正在運行Windows 7. – tuanvt

+0

嘗試在Visual Studio的項目屬性中將平臺目標更改爲x86。這些驅動程序可能不適用於64位... –

+0

64位訪問驅動程序在[Microsoft Access數據庫引擎2010可再發行組件]中可用(http://www.microsoft.com/download/en/details.aspx?id= 13255)。查看我的[answer over here](http://stackoverflow.com/a/7223713/95195)瞭解連接字符串。 –

相關問題