如何使用C#创建Excel电子表格而不需要在运行代码的计算机上安装Excel?


当前回答

如果您正在创建Excel 2007/2010文件,请尝试此开源项目:https://github.com/closedxml/closedxml

它提供了一种面向对象的方式来操作文件(类似于VBA),而无需处理XML文档的麻烦。可以使用使用任何.NET语言,如C#和Visual Basic(VB)。ClosedXML允许您在不使用Excel的情况下创建Excel 2007/2010文件应用典型的示例是在web上创建Excel报表服务器:var工作簿=新XLWorkbook();var worksheet=workbook.Worksheets.Add(“样本表”);worksheet.Cell(“A1”).Value=“Hello World!”;工作簿.另存为(“HelloWorld.xlsx”);

其他回答

你可能想看看GemBox.Spresheet。

他们有一个免费版本,具有所有功能,但如果符合您的需要,则限制为每张150行,每张工作簿5页。

我还不需要自己使用它,但看起来很有趣。

一些第三方组件供应商,如Infregistics或Syncfusion,提供了非常好的Excel导出功能,不需要安装Microsoft Excel。

由于这些供应商还提供高级UI网格组件,如果您希望excel导出的样式和布局模拟应用程序用户界面中网格的当前状态,这些组件特别方便。

如果您的导出是在服务器端执行的,重点是要导出的数据,并且没有到UI的链接,那么我会选择一个免费的开源选项(例如ExcelLibrary)。

我以前参与过一些试图在Microsoft Office套件上使用服务器端自动化的项目。根据这一经验,我强烈建议反对这种做法。

IKVM+波伊

或者,你可以使用Interop。。。

Java开源解决方案是Apache POI。也许这里有一种设置互操作的方法,但我对Java的了解不够,无法回答这个问题。

当我探索这个问题时,我最终使用了互操作程序集。

我找到了另一个没有太多依赖性的库:MiniExcel。

您可以使用DataTables作为电子表格创建数据集(表格的名称是电子表格的名称),并通过以下方式将其保存到.xlsx文件

using var stream = File.Create(filePath);
stream.SaveAs(dataSet);

or

MiniExcel.SaveAs(filePath, dataSet);

它还提供Excel文件的读取,并支持CSV文件的读取和写入。