导入和导出 Excel-什么是最好的库?

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

要求:

  • Excel2007文件(Excel2003是否支持超过64k 行? 我需要更多。)
  • 不需要服务器上的 Excel
  • 接受类型化集合,如果可以,则尝试在 Excel 中将数值字段放置为数值。
  • 适用于大文件(100k 到10M)-足够快。
  • 导出 GUID 时不会崩溃!
  • 不需要花费大量的金钱(没有像 aspose 这样的企业库)。免费总是好的,但也可以是商业图书馆。

你推荐什么库? 你有没有用它来处理大量的数据? 还有其他的解决方案吗?

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

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


编辑: 具有讽刺意味的是,在我看来,最好的 Excel 导入和导出库根本没有导出。不是所有的情况都是这样,但我的情况就是这样。XLS 文件只支持64k 行。XLSX 支持高达1M。我尝试过的免费库性能很差(当有200k 行时,一秒钟加载一行)。我还没有尝试过付费的,因为我觉得他们的价值被高估了,他们提供的所有你需要的是一个快速的 XLSX <-> CSV 转换例程。

204477 次浏览

检查 卓越套餐项目,它使用 Excel 2007的 Office Open XML 文件格式,它是轻量级和开源的..。

我以前用过 Flexcel,它很棒。但是,这更多的是用于以编程方式创建和更新 excel 工作表。

Yogesh Jagota 在 CodeProject 上有一篇相当不错的文章和库:

导入-导出库

我用它来导出数据从 SQL 查询和其他数据源到 Excel-工作正好适合我。

干杯

我将为平面 CSV 文件投入精力,如果只是因为你对代码有最好的控制的话。只要确保你读取了这些行,并且一次处理一个(读取文档到最后并且拆分会消耗掉你所有的内存——写入时也是一样,然后将它们流出)。

是的,用户将不得不保存-作为 CSV 在 Excel 之前,你可以处理它,但也许这个限制可以克服的培训和提供明确的指示页面?

最后,当您导出到客户时,如果您将 mime 类型设置为 text/csv,那么 Excel 通常会映射到该类型,因此在用户看来它是“一个 Excel 文件”。

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

从我最初的答案开始,我就发现了 打开 XML SDK。它为电子表格对象提供了强类型类,而且似乎相当容易使用。 我将在我的一个项目中使用它进行报告。唉,2.0版本应该在2009年底或2010年才会发布。

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

用于. NET 的 SpreadsheetGear 读写 CSV/XLS/XLSX 并做更多的事情。

你可以看到使用 C # 和 VB 源代码 给你的实时 ASP.NET 示例,并下载免费试用版 给你

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

免责声明: 我拥有电子表格有限责任公司

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

CSharpJExcel 的代码是 LGPL,目前可以从 这个页面获得,同时我们准备在 JExcel SourceForge 站点上部署它。它将与 VS2005或 VS2008编译。原始 JExcel 文档中的示例将完整地移到。NET 版本。

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

在 LGPL 下对商业项目免费的 ExcelPackage 的最后一个版本是 https://www.nuget.org/packages/EPPlus/4.5.3.3

如果您需要最新和最大的,商业许可证可在这里: https://epplussoftware.com/en/LicenseOverview/

由于应用程序应该将一些数据导出到 excel-template 2007,所以我仍然在与导出到 excel 函数的方法作斗争

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

电子表格设备是最好的商业图书馆,我们已经发现并正在使用。我们公司做了很多先进的 excel 进出口和 Spreadsheetgear 支持很多先进的 excel 功能远远超过任何你可以做的简单的 CSV,它是快速的。它不是免费的,也不是很便宜,但是值得,因为它的支持非常好。如果您遇到问题,开发人员实际上会对您作出响应。

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

ApachePOIjava 库怎么样。我没有在 Excel 中使用它,但是在 Word2007中使用了它。

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

我们差点被同样的事情耽搁了:

  1. 准备/处理电子表格文件
  2. 保存文件
  3. 导入文件
  4. 处理系统中的数据

工作流程

外接程序 Express 允许您在 Excel 中创建一个按钮,而无需使用 VSTO 进行所有繁琐的操作。然后工作流程变成:

  1. 准备/处理电子表格文件
  2. 导入文件(使用按钮 在 Excel 中)
  3. 处理系统中的数据

让按钮后面的代码使用“原生”Excel API (通过 Add-in Express)并直接推入收件人系统。对于开发人员或用户来说,你不能再透明了。值得考虑。

我已经使用 Excel Jetcell 很长时间了,我真的可以推荐它。 Http://www.devtriogroup.com/exceljetcell

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

我知道这是相当晚了,但我觉得有必要回答 XPorter(写作)和 XlReader(阅读)从 XPortTools. Net。我们测试了相当多的库,但在性能方面没有什么能与之相比(我在这里讨论的是在几秒钟内写入数百万行)。这些产品真是好得不能再好了!

我一直在使用 封闭的 XML,它工作得很好!

Closed XML 使开发人员更容易创建 Excel2007/2010 它提供了一种很好的面向对象的方式来操作文件 (类似于 VBA)而不用处理 XML 文档的麻烦 可以被任何.NET 语言如 C # 和 VisualBasic (VB)使用。

下面的网站演示如何将 DataTable、 DataSet 或 List < > 导出到“正确的”Excel2007中。Xlsx 文件(而不是导出。Csv 文件,并让 Excel 打开它)。

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

知识库

所有的源代码都给出了,免费的,以及一个演示应用程序。

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

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

希望这个能帮上忙。

你可以尝试下面这个库,它很简单,只是微软的 Open XML SDK 的一个简单的包装(你甚至可以从第二个 Excel 文件中重用格式、样式甚至整个工作表) : Http://officehelper.codeplex.com