关于c#:导入和导出Excel – 什么是最好的库?

Import and Export Excel - What is the best library?

在C中的一个ASP.NET应用程序中,我们获取特定的数据收集(亚音速收集)并将其导出到Excel。我们还希望以特定格式导入Excel文件。我在找一个我能用的图书馆。

要求:

  • Excel2007文件(Excel2003是否支持超过64K行?我需要的不止这些。)
  • 服务器上不需要Excel
  • 获取一个类型化集合,如果可以,尝试在Excel中将数字字段作为数字。
  • 适用于大文件(100K到10M)-足够快。
  • 导出guid时不会崩溃!
  • 不需要花费一大笔钱(没有像Aspose这样的企业库)。免费总是很好的,但可以是一个商业图书馆。

你推荐什么图书馆?您是否将其用于大量数据?还有其他解决方案吗?

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

我正在考虑扁平的csv文件,但excel是客户的要求。如果我有一个转换Excel的工具,我可以直接使用csv。鉴于Excel2007是一种基于XML(和压缩)的文件格式,我猜想这种库应该很容易找到。然而,对我来说最重要的是你的评论和意见。

编辑:具有讽刺意味的是,在我看来,按照最有投票权的答案,最好的Excel导入和导出库根本不导出。并非所有情况都如此,但我的情况也是如此。XLS文件仅支持64K行。XLSX最多支持1米。我尝试过的免费库性能不好(当有20万行时,一秒钟加载一行)。我还没有试过付费的,因为我觉得当你只需要一个快速的xlsx<->csv转换程序时,它们的价值就太高了。


我发现了开放式XML SDK,因为我的原始答案。它为电子表格对象提供了强类型的类,而且似乎非常容易使用。我将把它用于我的一个项目中的报告。唉,2.0版直到2009年底或2010年才发布。


如果你对代码有最大的控制权,我会把我的手放在平面csv文件上。只需确保你读了这些行,然后一次一行地处理它们(把文档读到末尾,然后拆分文档会耗尽你所有的内存——和写一样,把它流出来)。

是的,在处理之前,用户必须在Excel中保存为csv,但是也许可以通过培训和在页面上提供清晰的说明来克服这个限制?

最后,当您导出到客户时,如果您将mime类型设置为text/csv,则Excel通常映射到该类型,因此用户会觉得它是"Excel文件"。


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

由于我的应用程序应该将一些数据导出到Excel模板2007,所以我仍在与"导出到Excel"功能作斗争。

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


我一直在使用closedxml,它工作得很好!

0


.NET的电子表格装置读取和写入csv/xls/xlsx并执行更多操作。

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

当然,我认为电子表格是在ASP.NET中导入/导出Excel工作簿的最佳库,但我有偏见。您可以在本页的右侧看到我们的一些客户所说的话。

免责声明:我拥有SpreadsheetGear LLC


用于Excel 2003的NPOI开放源代码http://www.leniel.net/2009/07/creating-excel-电子表格-xls-xlsx-c.html


csv导出简单、易于实现和快速。不过,有一个潜在的问题值得注意。Excel(2007年之前)不在csv文件中保留前导零。这将混淆邮政编码、产品ID和其他包含数值的文本数据。有一个技巧可以使Excel正确地导入值(如果我记得正确,请使用分隔符和前缀值=符号,例如…,="02052",…)。如果您有使用csv执行后处理任务的用户,他们需要知道他们需要将格式更改为xls,而不是将文件保存回csv。如果他们这样做,前导零将永远丢失。


我以前用过flexcel,它很棒。但这更多是为了以编程方式创建和更新Excel工作表。


多年来,我一直使用JExcel,这是一个优秀的开源Java项目。它还可以通过使用J_编译它来实现.NET,而且在这个化身中,我也取得了巨大的成功。但是,最近我需要将代码迁移到本机.NET,以支持我在其中创建Excel输出的64位IIS应用程序。32位J版本无法加载。

csharpjexcel的代码是lgpl,目前在这个页面上可用,而我们准备在jexcel sourceforge站点上部署它。它将与VS2005或VS2008一起编译。原始jexcel文档中的示例将很好地原封不动地转移到.NET版本。

希望对这里的人有帮助。


我已经和ExcelJetcell合作了很长时间,我真的可以推荐它。http://www.devtriogroup.com/exceljetcell

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

下面的站点演示如何将数据表、数据集或列表<>导出到"正确的"Excel2007.xlsx文件中(而不是导出.csv文件,并让Excel打开它)。

它使用OpenXML库,因此您不需要在服务器上安装Excel。

Mikes知识库-导出到Excel

所有的源代码都是免费提供的,还有一个演示应用程序。

很容易添加到自己的应用程序中,只需调用一个函数,传入Excel文件名和数据源:

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

希望这有帮助。


我已经尝试过CSharpjexcel,并且不会推荐它,至少在有可用的文档之前不会。与开发人员的评论相反,它不是一个直接的本地端口。


检查ExcelPackage项目,它使用Excel2007的OfficeOpenXML文件格式,它是轻量级的、开源的…


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


我知道这很晚了,但我不得不回答xporttools.net上的xporter(写作)和xlreader(阅读)。我们测试了相当多的库,但在性能方面没有任何进展(我在这里说的是在几秒钟内写数百万行)。对这些产品说得不够好!


您可以尝试以下库,它非常简单,只是Microsoft开放式XML SDK的一个简单包装(甚至可以重用辅助Excel文件中的格式、样式甚至整个工作表):http://officehelper.codeplex.com


我们刚刚确定了一个类似的需求。我认为考虑用户体验很重要。

我们几乎偏离了原来的方向:

  • 准备/处理电子表格文件
  • 保存文件
  • 导入文件
  • 使用系统中的数据
  • …工作流程

    外接程序Express允许您在Excel中创建一个按钮,而不必对vsto进行任何繁琐的处理。然后,工作流变成:

  • 准备/处理电子表格文件
  • 导入文件(使用Excel中的按钮)
  • 使用系统中的数据
  • 让按钮后面的代码使用"本机"ExcelAPI(通过外接程序Express)并直接推送到收件人系统。对于开发人员或用户来说,您不能变得更加透明。值得考虑。


    关于Yogesh Jagota的代码项目,有一篇很好的文章和图书馆:

    Excel XML导入导出库

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

    干杯


    Apache POI Java库怎么样?我没有在Excel中使用过,但在Word 2007中使用过。


    SpreadsheetGear是我们找到并使用的最好的商业图书馆。我们公司有很多先进的Excel导入和导出,并且电子表格设备支持许多先进的Excel功能,这些功能远远超出了使用简单的csv所能做的任何事情,而且速度很快。虽然它不是免费的,也不是很便宜,但是值得,因为它的支持非常好。如果遇到问题,开发人员实际上会对您作出响应。