使用从LINQ到SQL查询的数据填充Excel

我想从C#中的LINQ查询发送一些数据到Excel速度表使用OLE

我有这样的查询:

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

我有Excel OLE对象工作正常,我只是不能弄清楚如何用LINQ查询中的数据填充Excel中的单元格。

PS:我使用Excel 2003,如果这有什么区别。

谁能帮我这个?

为每个Excel单元发送单独的OLE命令是非常慢的,所以关键是创build一个像这样的对象数组:

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

发送一个对象数组允许你发送数据types的混合,例如string,整数,date等。但是,如果你知道数据全是文本,你可以发送一个string数组。

该数组需要通过分配每个单独的值或通过使用reflection来获取数据对象属性从查询填充。 然后你可以像这样发送数组到Excel:

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

你可以用列数replaceZ20 – > Char +行数 – >string。

我假设你没有在Web场景中使用OLE,因为它最终会失败。

如果您只需要原始数据,则可以转储到制表符分隔的文本文件:

var lines = data.Select(d => d.Name +'\ t'+ d.AnotherProperty + …);

您最好的select是使用Excel XML格式。 我做了一个关于如何实现的博客文章: http : //www.aaron-powell.com/blog.aspx?id=1237

你还有其他的select,可以看看Excel的LINQ提供程序 – http://www.codeplex.com/xlslinq