在我们在C#中的一个ASP.NET应用程序中,我们采用某种数据集合(SubSonic集合)并将其导出到Excel . 我们还想以特定格式导入Excel文件 . 我正在寻找一个可以用于此目的的库 .
要求:
-
Excel 2007文件(Excel 2003是否支持超过64k行?我需要更多 . )
-
服务器上不需要Excel
-
采用类型化集合,如果可以,尝试将数字字段作为数字放入Excel中 .
-
适用于大文件(100k到10M) - 足够快 .
-
导出GUID时不会崩溃!
-
不需要花费大量资金(没有像aspose那样的企业库) . 免费总是很棒,但可以是商业图书馆 .
你推荐什么图书馆?您是否将它用于大量数据?还有其他解决方案吗?
现在,我正在使用一个简单的工具来生成稍后由Excel加载的HTML,但是我正在丢失一些功能,加上Excel在我们加载它时会抱怨 . 我不需要生成图表或类似的东西,只需导出原始数据 .
我在想平坦的CSV文件,但Excel是客户的要求 . 如果我有一个工具可以转换为Excel,我可以直接使用CSV . 鉴于Excel 2007是一种基于xml(和压缩)的文件格式,我猜这种库应该很容易找到 . 但是,对我来说最重要的是你的意见和看法 .
编辑:具有讽刺意味的是,在我看来,并以最多的投票回答,最好的Excel导入和导出库根本没有出口 . 对于所有情况都不是这种情况,但它适用于我的情况 . XLS文件仅支持64k行 . XLSX最多支持1M . 我尝试过的免费库具有糟糕的性能(当你有200k行时,一秒加载一行) . 我没有尝试过付费的,因为当你需要的是一个快速的XLSX < - > CSV转换例程时,我觉得它们的 Value 过高 .
20 回答
我过去使用过Flexcel这很棒 . 但这更多是以编程方式创建和更新Excel工作表 .
以下站点演示了如何将DataTable,DataSet或List <>导出到“正确的”Excel 2007 .xlsx文件中(而不是导出.csv文件,并让Excel打开它) .
它使用OpenXML库,因此您需要在服务器上安装Excel .
Mikes Knowledge Base - ExportToExcel
给出了所有源代码, free of charge 以及演示应用程序 .
添加到您自己的应用程序非常容易,您只需要调用一个函数,传入Excel文件名和数据源:
希望这可以帮助 .
我推荐它,至少在有一些文档可用之前不推荐它 . 与开发人员的评论相反,它不是一个直接的原生端口 .
Spreadsheetgear是我们发现和使用的最好的商业图书馆 . 我们公司做了很多先进的excel导入和导出,Spreadsheetgear支持许多高级excel功能,远远超出了你用简单的CSV做的任何事情,而且速度很快 . 它不是免费或非常便宜但值得,因为支持非常好 . 如果遇到问题,开发人员会实际回复您 .
我知道这已经很晚了,但我觉得有必要从xPortTools.Net回答xPorter(写作)和xlReader(阅读) . 我们测试了很多库,并且在性能方面没有任何结果(我对这些产品说了很多好东西!
新版本的ExcelPackage在这里http://EPPlus.codeplex.com
因为我的应用程序应该将一些数据导出到excel-template 2007,所以我仍在使用导出到excel函数
这个项目对我来说似乎很好,开发人员对错误和问题非常敏感 .
apache POI java库怎么样?我没有将它用于Excel,但确实将它用于Word 2007 .
多年来,我一直使用JExcel这是一个优秀的开源Java项目 . 它也可以通过使用J#来编译它,并且我在这个版本中也取得了很大的成功 . 但是,最近我需要将代码迁移到本机.NET以支持我在其中创建Excel输出的64位IIS应用程序 . 32位J#版本无法加载 .
CSharpJExcel的代码是LGPL,目前在this页面上可用,而我们准备在JExcel SourceForge站点上部署它 . 它将使用VS2005或VS2008进行编译 . 原始JExcel文档中的示例很好地完整地移动到.NET版本 .
希望对这里的人有所帮助 .
如果只是因为你对代码有了最大的控制权,那么我将把手放在平坦的csv文件中 . 只要确保你读入行并一次处理一行(将文档读到最后并且拆分将占用你所有的内存 - 与写入相同,将其流出) .
是的,用户必须先在Excel中保存为CSV可以处理它,但也许这个限制可以通过培训和在页面上提供明确的指示来克服?
最后,当您导出到客户时,如果将mime类型设置为text / csv,则Excel通常会映射到该类型,因此用户看起来是“Excel文件” .
检查ExcelPackage项目,它使用Excel 2007的Office Open XML文件格式,它的轻量级和开源...
您可以尝试以下库,它很容易,它只是微软Open XML SDK的一个轻量级包装器(您甚至可以重用格式,样式甚至是二级Excel文件中的整个工作表):http://officehelper.codeplex.com
CSV导出简单,易于实现且速度快 . 但是,有一个值得注意的潜在问题 . Excel(最多2007年)不会在CSV文件中保留前导零 . 这将使邮政编码,产品ID和包含数值的其他文本数据变得混乱 . 有一个技巧可以使Excel正确导入值(使用分隔符和带有=符号的前缀值,如果我没记错的话,例如..,=“02052”,......) . 如果您的用户将使用CSV执行后处理任务,则需要注意他们需要将格式更改为XLS,而不是将文件保存回CSV . 如果他们这样做,领先的零将永远失去 .
SpreadsheetGear for .NET读取和写入CSV / XLS / XLSX并执行更多操作 .
您可以使用C#和VB源代码here查看实时ASP.NET示例并下载免费试用here .
当然我认为SpreadsheetGear是在ASP.NET中导入/导出Excel工作簿的最佳库 - 但我有偏见 . 您可以在this page的右侧看到我们的一些客户所说的话 .
免责声明:我拥有SpreadsheetGear LLC
我和excel jetcell合作了很长时间,真的可以推荐它 . http://www.devtriogroup.com/exceljetcell
商业产品
Excel文件XLS和XLSX
基于纯网自己的引擎 .
NPOI for Excel 2003开源http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
我一直在使用ClosedXML,效果很好!
自从我的原始答案以来,我发现了Open XML SDK . 它为电子表格对象提供了强类型类,并且似乎相当容易使用 . 我打算在我的一个项目中使用它来报告 . 唉,版本2.0不应该在2009年底或2010年之前发布 .
我们刚刚发现了类似的需求 . 我认为考虑用户体验非常重要 .
我们几乎一路走来:
准备/工作在电子表格文件中
保存文件
导入文件
使用系统中的数据
......工作流程
Add-in Express允许您在Excel中创建一个按钮,而无需使用VSTO进行任何繁琐的操作 . 然后工作流程变为:
准备/工作在电子表格文件中
导入文件(使用Excel中的按钮)
使用系统中的数据
让按钮后面的代码使用“本机”Excel API(通过Add-in Express)并直接推送到收件人系统 . 您无法为开发人员或用户提供更多透明度 . 值得考虑 .
你可以使用
Microsoft.Jet.OLEDB.4.0
Yogesh Jagota在CodeProject上有一篇非常好的文章和库:
Excel XML Import-Export Library
我用它将SQL查询和其他数据源中的数据导出到Excel - 对我来说效果很好 .
干杯