导入和导出Excel – 什么是最好的图书馆?

在C#中的一个ASP.NET应用程序中,我们采取一定的数据收集(SubSonic收集)并将其导出到Excel。 我们也想要以特定的格式导入Excel文件。 我正在寻找一个我可以用于这个目的的图书馆。

要求:

  • Excel 2007文件(Excel 2003是否支持64k行?我需要的不止于此)。
  • 在服务器上不需要Excel
  • 采取一个types的集合,如果可以的话,试图把数字字段作为数字在Excel中。
  • 大文件(100k到10M)运行良好 – 足够快。
  • 导出GUID时不会崩溃!
  • 不花费一大笔钱(没有像aspose这样的企业库)。 免费总是很好,但可以是一个商业图书馆。

你推荐什么图书馆? 你有没有使用它的大量的数据? 还有其他解决scheme吗?

现在,我正在使用一个简单的工具来生成稍后由Excel加载的HTML,但是我正在失去一些function,另外Excel在我们加载时抱怨。 我不需要生成图表或类似的东西,只需要输出原始数据。

我正在考虑单位的CSV文件,但Excel是客户的要求。 我可以直接使用CSV,如果我有一个工具来转换和Excel。 鉴于Excel 2007是一个基于XML(和压缩)的文件格式,我猜这种库应该很容易find。 但是,最重要的是你的意见和看法。


编辑:具有讽刺意味的是,在我看来,并与最票的答案,最好的Excel导入和导出库是根本没有出口。 这不是所有情况下的情况,但它是我的。 XLS文件只支持64k行。 XLSX支持高达1M。 我试过的免费库function不好(一秒钟加载一行,当你有200K行)。 我还没有尝试过付费的,因为我觉得当你需要的是一个快速的XLSX < – > CSV转换程序时,它们的价值被高估了。

如果仅仅是因为你对代码有最大的控制权,那么我会把我的手放在平面的csv文件中。 只要确保你阅读了行并逐个处理它们(读取文档到最后,分割将会消耗掉所有的内存 – 与写入一样,stream出来)。

是的,用户必须在excel中保存为CSV格式,然后才能进行处理,但也许可以通过在页面上进行培训并提供明确的说明来解决这个限制。

最后,当您导出到客户时,如果将mimetypes设置为text / csv,则Excel通常会映射到该types,因此对用户来说显示为“Excel文件”。

自从我原来的答案以来,我发现了Open XML SDK 。 它为电子表格对象提供了强types类,除此之外,似乎很容易处理。 我将在我的一个项目中使用它进行报告。 唉,2.0版不应该在2009年底或2010年才能发布。

新版本的ExcelPackage在这里http://EPPlus.codeplex.com

我仍然与导出为Excel函数,因为我的应用程序应该导出一些数据到Excel模板2007年

这个项目对我来说似乎很好,开发人员对错误和问题的反应非常敏感。

我一直在使用ClosedXML ,它工作的很好!

ClosedXML使开发人员可以更轻松地创buildExcel 2007/2010文件。 它提供了一个很好的面向对象的方式来处理文件(类似于VBA),而不用处理XML文档的麻烦。 它可以被任何.NET语言(如C#和Visual Basic(VB))使用。

SpreadsheetGear for .NET读取和写入CSV / XLS / XLSX并做更多。

您可以在这里看到带有C#和VB源代码的实时ASP.NET示例,并在此处下载免费试用版。

当然,我认为SpreadsheetGear是在ASP.NET中导入/导出Excel工作簿的最佳库 – 但我有点偏颇。 你可以看到我们的一些客户在这个页面的右边说什么。

免责声明:我自己的SpreadsheetGear LLC

我过去使用过Flexcel ,非常棒。 但是这更多的是以编程方式创build和更新Excel工作表。

CSV导出简单,易于实施和快速。 但是有一个潜在的问题值得注意。 Excel(截至2007年)不保留CSV文件中的前导零。 这将篡改邮政编码,产品编号和其他包含数值的文本数据。 有一个技巧,将使Excel正确导入值(使用分隔符和前缀值与=符号,如果我没有记错,例如..,=“02052”,…)。 如果您的用户将使用CSV执行后期处理任务,则需要知道他们需要将格式更改为XLS,而不是将文件保存回CSV。 如果他们这样做,领先的零将会失去好处。

多年来,我已经使用了JExcel这个优秀的开源Java项目。 这也是使用J#编译.NET的能力,在这个版本中我也取得了很大的成功。 不过,最近我需要将代码迁移到本地.NET,以支持创buildExcel输出的64位IIS应用程序。 32位J#版本不会加载。

CSharpJExcel的代码是LGPL,目前在这个页面上可用,而我们准备在JExcel SourceForge网站上部署它。 它将用VS2005或VS2008进行编译。 原始的JExcel文档中的例子将完好地转移到.NET版本上。

希望对这里的人有所帮助。

我已经和excel jetcell合作很久了,真的可以推荐它。 http://www.devtriogroup.com/exceljetcell

  • 商业产品
  • Excel文件XLS&XLSX
  • 基于纯净的自己的引擎。

以下站点演示如何将DataTable,DataSet或List <>导出到“正确的”Excel 2007 .xlsx文件(而不是导出.csv文件,并使Excel打开它)。

它使用OpenXML库,所以你不需要在你的服务器上安装Excel。

迈克知识库 – ExportToExcel

所有的源代码是免费的 ,以及演示应用程序。

添加到自己的应用程序非常简单,只需调用一个函数,传入Excel文件名和数据源即可:

DataSet ds = CreateSampleData(); string excelFilename = "C:\\Sample.xlsx"; CreateExcelFile.CreateExcelDocument(ds, excelFilename); 

希望这可以帮助。

检查ExcelPackage项目,它使用Excel 2007的Office Open XML文件格式,它是轻量级和开源的…

我试过CSharpJExcel,不会推荐它,至less在有一些文档可用之前。 与开发者的评论相反,这不是一个直接的本地端口。

我知道这是相当晚,但我感到不得不从xPortTools.Net回答xPorter (写)和xlReader (阅读)。 我们testing了不less库,而且在性能方面没有任何进展(我说的是在这里写几百万行)。 不能说这些产品的好东西!

您可以使用Microsoft.Jet.OLEDB.4.0

我们刚刚发现了类似的需求。 我认为考虑用户体验很重要。

我们几乎也有同样的情况:

  1. 准备/工作在电子表格文件
  2. 保存存档
  3. 导入文件
  4. 使用系统中的数据

工作stream程

使用快捷方式 ,您可以在Excel中创buildbutton,而无需使用VSTO进行繁琐的操作。 然后工作stream程变成:

  1. 准备/工作在电子表格文件
  2. 导入文件(使用Excel中的button)
  3. 使用系统中的数据

让button后面的代码使用“本地”Excel API(通过Add-in Express),并直接推入收件人系统。 开发人员或用户无法获得更多的透明度。 值得考虑。

Yogesh Jagota在CodeProject上有一篇很不错的文章和图书馆:

Excel XML导入 – 导出库

我用它将SQL查询和其他数据源的数据导出到Excel中 – 对我来说工作得很好。

干杯

你可以尝试下面的库,它很容易,它只是一个微软的Open XML SDK的包装(甚至可以重用格式,样式,甚至从辅助Excel文件中的整个工作表): http : //officehelper.codeplex.com

Spreadsheetgear是我们发现和使用的最好的商业图书馆。 我们公司做了很多先进的excel导入和导出工作,Spreadsheetgear支持许多先进的excelfunction,远远超出了使用简单CSV所能做的任何事情,而且速度很快。 它不是免费的或非常便宜,但值得,因为支持是优秀的。 如果遇到问题,开发人员会实际回复您。

怎么样的Apache POI的Java库。 我没有使用它的Excel,但确实使用它的Word 2007。