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


当前回答

前段时间,我在NPOI上创建了一个DLL。使用它非常简单:

IList<DummyPerson> dummyPeople = new List<DummyPerson>();
//Add data to dummyPeople...
IExportEngine engine = new ExcelExportEngine();
engine.AddData(dummyPeople); 
MemoryStream memory = engine.Export();

你可以在这里阅读更多。

顺便说一句,它是100%开源的。随时使用、编辑和共享;)

其他回答

也可以使用Aspose这样的第三方库。

此库的优点是它不需要在您的计算机上安装Excel,这在您的情况下是理想的。

只想添加另一个引用到直接解决您问题的第三方解决方案:http://www.officewriter.com

(免责声明:我为制作OfficeWriter的公司SoftArtisans工作)

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

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

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

or

MiniExcel.SaveAs(filePath, dataSet);

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

要将xls保存为xlsx格式,我们只需要从Microsoft.Office.Interop.Excel库调用SaveAs方法。该方法将采用大约16个参数,其中一个参数是文件格式。

Microsoft文档:此处另存为方法参数

我们需要传递的对象如下

wb.SaveAs(filename, 51, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, false, false, 1,1, true, 
System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value)

这里,51是XLSX的枚举值

对于不同文件格式的另存为,可以参考xlFileFormat

你试过sylk吗?

我们曾经在经典的asp中生成excelsheets作为sylk,现在我们也在寻找excelsheeter。

sylk的优点是,可以格式化单元格。