将 LINQ 对象列表导出到 Excel 文件
在 Web 应用程序中,是否有一种简单的方法可以将 LINQ 对象列表导出到 Excel 文件?有没有好的库可以做到这一点?
From a web application, is there a simple way to export a list of LINQ objects to an Excel file? Are there any good libraries that can do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我根据上面 VB 视频的链接最终得到的 Excel 导出。它接受任何对象列表(不包括实体框架对象上的导航属性和集合)并将其导出到 Excel。它在约 4 秒内导出约 35K 记录。
This is the Excel Export I ended up with based on the link to the VB video above. It takes any List of Objects (It excludes navigation properties and collections on Entity Framework objects) and exports them to Excel. It exports about 35K records in ~4 seconds.
查看从 ASP.Net 链接的 VB 团队的视频,Beth Massi 实际上做了一个非常类似的演示,可能可以满足您的需求:
http://www.asp.net/linq/videos/how-do-i-create-excel-spreadsheets-using -linq-to-xml
您可能会发现同系列中的其他内容很有用,它们位于页面下方约 4/5 处:
http://www.asp.net/web-forms/data
这里还有一个名为 Linq-To-Excel 的项目 - http://code.google.com/p/linqtoexcel/
或者您可以使用 OpenXML 库来执行此类操作,这是一个这样的示例 - http://msdn。 microsoft.com/en-us/library/bb508943(v=office.12).aspx
Excel 还可以直接打开 XML 文件,因此您只需使用 XML 序列化或任何其他方法创建 XML 输出,然后打开在 Excel 中。
Check out the VB team's videos linked from the ASP.Net, Beth Massi actually does a very similar demo that might do what you want:
http://www.asp.net/linq/videos/how-do-i-create-excel-spreadsheets-using-linq-to-xml
You might find others in the same series useful, they are here about 4/5 down the page:
http://www.asp.net/web-forms/data
There is also a project called Linq-To-Excel which is here - http://code.google.com/p/linqtoexcel/
Or you could use the OpenXML libraries to do this sort of thing, here is one such example - http://msdn.microsoft.com/en-us/library/bb508943(v=office.12).aspx
Excel can also open XML files directly, so you could just create an XML output using XML serialisation or whatever other method, and open it in Excel.
因此,在指定 Excel 时,您将致力于行/列范例(例如,与 xml 相反)。因此,您必须指定属性如何映射到列。
除此之外,您还可以使用 Ole DB 提供程序。循环遍历您的对象,使用字符串生成器为每个对象生成一条 INSERT 语句,然后针对您的工作表执行该语句。像蛋糕一样简单。
So, in specifying Excel, you're committing to a row / column paradigm (as opposed to xml, for example). So you'll have to specify how the properties map to columns.
Beyond that you write to an Excel file using the Ole DB provider. Loop through your objects, generating an INSERT statement for each one using a stringbuilder, and execute that against your sheet. Easy as cake.