4

我正在尝试使用 OLE 将 C# 中的 LINQ 查询中的一些数据发送到 Excel 速度表

我有一个这样的查询:

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

我的 Excel OLE 对象工作正常,我只是不知道如何用来自 LINQ 查询的数据填充 Excel 中的单元格。

PS:如果这有什么不同,我正在使用 Excel 2003。

谁能帮我这个?

4

3 回答 3

3

为每个 Excel 单元格发送单独的 OLE 命令非常慢,因此关键是创建一个对象数组,如下所示:

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

发送对象数组允许您发送混合数据类型,例如字符串、整数、日期等。但是,如果您知道数据都是文本,例如,您可以只发送字符串数组。

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

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

您可以用列数 -> Char + 行数 -> 字符串替换 Z20。

于 2008-12-18T02:42:15.023 回答
0

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

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

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

于 2008-12-18T00:28:38.273 回答
0

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

您的另一个选择是查看 Excel 的 LINQ 提供程序 - http://www.codeplex.com/xlslinq

于 2008-12-18T01:06:11.723 回答