一尘不染

如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?

c#

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


阅读 496

收藏
2020-05-19

共1个答案

一尘不染

您可以使用一个名为ExcelLibrary的库。它是发布在Google Code上的免费开放源代码库:

ExcelLibrary

这似乎是您上面提到的PHP ExcelWriter的端口。它不会写入新的.xlsx格式,但是他们正在努力添加该功能。

它非常简单,小巧且易于使用。另外,它还有一个DataSetHelper,可让您使用数据集和数据表轻松处理Excel数据。

ExcelLibrary似乎仍然仅适用于较旧的Excel格式(.xls文件),但将来可能会增加对较新的2007/2010格式的支持。

您还可以使用EPPlus,它仅适用于Excel
2007/2010格式的文件(.xlsx文件)。还有NPOI可以同时使用。

如注释中所述,每个库都有一些已知的错误。总之,随着时间的流逝,EPPlus似乎是最佳选择。它似乎也得到了更积极的更新和记录。

另外,如下面的@АртёмЦарионов所述,EPPlus支持数据透视表,而ExcelLibrary可能有一些支持(ExcelLibrary中的数据透视表问题

以下是几个可供快速参考的链接:
ExcelLibrary - GNU Lesser
GPL

EPPlus - GNU
Lesser通用公共许可证(LGPL)

NPOI -
Apache许可证

以下是ExcelLibrary的一些示例代码:

这是一个从数据库中获取数据并从中创建工作簿的示例。请注意,ExcelLibrary代码是底部的单行:

//Create the data set and table
DataSet ds = new DataSet("New_DataSet");
DataTable dt = new DataTable("New_DataTable");

//Set the locale for each
ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;
dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture;

//Open a DB connection (in this example with OleDB)
OleDbConnection con = new OleDbConnection(dbConnectionString);
con.Open();

//Create a query and fill the data table with the data from the DB
string sql = "SELECT Whatever FROM MyDBTable;";
OleDbCommand cmd = new OleDbCommand(sql, con);
OleDbDataAdapter adptr = new OleDbDataAdapter();

adptr.SelectCommand = cmd;
adptr.Fill(dt);
con.Close();

//Add the table to the data set
ds.Tables.Add(dt);

//Here's the easy part. Create the Excel worksheet from the data set
ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);

创建Excel文件就这么简单。您也可以手动创建Excel文件,但是上述功能确实让我印象深刻。

2020-05-19