2008-12-18 34 views
4

我想從C#中的LINQ查詢一些數據發送到使用OLE填充的Excel與LINQ to SQL查詢數據

我有這樣的查詢的Excel速度表:

Var data = from d in db.{MyTable} 
      where d.Name = "Test" 
      select d; 

我有Excel OLE對象工作正常,我只是無法弄清楚如何使用LINQ查詢中的數據填充Excel中的單元格。 PS:我使用Excel 2003,如果這有什麼區別的話。

任何人都可以幫助我嗎?

回答

3

發送個別OLE命令爲每個Excel單元是很慢的,因此關鍵是要創建一個對象陣列是這樣的:

int noOfRows = data.Count - 1; 
int noOfColumns = mydataclass.GetType().GetProperties().Count() - 1; 
Object[noOfRows, noOfColumns] myArray; 

發送一個對象數組允許您例如發送數據類型的混合物字符串,整數,日期等。但是,如果您知道數據全是文本,則可以發送字符串數組。

該數組需要通過分配每個單獨的值或通過使用反射來獲取數據對象屬性從查詢中填充。然後你就可以在陣列發送到Excel這樣的:

XLOLESheetobj.Range("A1","Z20").Value = myArray; 

您可以用列數代替Z20 - >字符+行數 - >字符串。

0

我假設你沒有在Web場景中使用OLE,因爲它最終會失敗。

如果只是需要原始數據,就可以轉儲到製表符分隔的文本文件:

變種線= data.Select(d => d.Name + '\ T' + d.AnotherProperty + .. );