2012-07-18 32 views
4

到Excel情況如下 -如何從存儲過程移至10,000行數據的使用C#的winform

  • 用戶X想約PlayerY信息。
  • 目前我得到有關PlayerY的詳細信息,並運行兩個返回兩個數據集的SQL腳本 - 每個數據集大約有10,000條記錄。
  • 我然後手動複製這些設置粘貼到Excel工作簿和電子郵件將此用戶X

目前規劃的方法:

  1. 我將創建一個簡單的WinForm或WPF,對於用戶X,這將接受PlayerY的細節輸入。
  2. 我將創建兩個存儲過程,它們將接受來自表單的輸入。

數據如何從數據庫獲取到UserX的客戶端?

我問,因爲數據集非常大,並且由於大小的原因,某些方法可能會出現無法預料的問題。如果存儲的procs首先將數據移動到實際的服務器表,然後再進行第二步並將數據從服務器表移動到Excel中?或者我應該只是讓存儲過程返回數據集,因爲它可以很容易地將它們直接移入XL而不需要任何中間服務器表?

+0

我認爲你的第一個問題應該是,數據如何從數據庫獲取到UserX的客戶端。 – Jodrell 2012-07-18 09:10:13

+0

@Jodrell我會編輯 – whytheq 2012-07-18 09:52:53

+0

@Jodrell你有答案:)? – whytheq 2012-07-18 11:52:40

回答

2

如果您打算THR」 C#讀取記錄,

而是取10000或多個記錄在一個時間,獲取特定沒有。記錄例如1000次,10次。這將使處理速度更快,減少內存負載。

您不需要創建任何中間服務器表來存儲數據集。

在c#中使用DocumentFormat.OpenXml.Spreadsheet,可以將該數據集編寫爲Xlsx格式或使用System.xml創建xml文件或使用第三方工具/創建自己的excel xml來創建xls格式。

+0

xlsx是我想要將數據移動到的格式 - 您是否知道用於執行此操作的代碼的任何示例? – whytheq 2012-07-18 13:11:42

+0

請按照以下網址中提到的步驟操作:http://lateral8.com/articles/2010/3/5/openxml-sdk-20-export-a-datatable-to-excel.aspx。 – PMegh 2012-07-18 14:31:34

+0

我會去... – whytheq 2012-07-18 16:41:48

1

我會建議你創建使用C#在運行時通過存儲過程返回的結果.csv文件,.csv文件可在Excel中打開,所以你還是讓Excel作爲結尾

應用

也請看到此鏈接,因此您使用的是Office

自動化

http://support.microsoft.com/kb/257757微軟目前不建議採取段落,並且不支持, 自動化的Microsoft Office應用程序從任何無人值守我不建議, 非交互式客戶端應用程序或組件(包括ASP, ASP.NET,DCOM和NT服務),因爲Office在此環境中運行Office時可能會出現不穩定的 行爲和/或死鎖。

+0

... csv從存儲過程返回,在內存中?還是將csv保存到文件系統? – whytheq 2012-07-18 18:16:49

+0

@whytheq您將擁有創建.csv和保存的代碼 – HatSoft 2012-07-18 19:41:06

相關問題