2008-12-18 48 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 + .. );