一、命令行安装程序包
工具→Nuget包管理器→程序包管理器控制台:
输入命令
Install-Package ClosedXML
二、代码案例
最核心的一句在这里:
worksheet.RangeUsed().FirstRow().SetAutoFilter();
[HttpGet("DownloadExport")]
public FileContentResult DownloadExport()
{
//创建一个DataTable
var dt = new DataTable("ClosedXML");
dt.Columns.Add("Id",typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(int));
var newRow = dt.NewRow();
newRow["Id"] = 1;
newRow["Name"] = "ClosedXML";
newRow["Age"] = 24;
dt.Rows.Add(newRow);
var fileContents = Export();
return File(fileContents, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","ClosedXML.xlsx");
byte[] Export()
{
//传一个DataTable转换字节数组 byte[]
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet =
workbook.Worksheets.Add("Sheet1");
int row = 0;
for (int i = 0; i < dt.Columns.Count; i++)
{
row = 1;
worksheet.Cell(row, i + 1).Value = dt.Columns[i].ColumnName;
}
// 设置第一行的样式为筛选
worksheet.RangeUsed().FirstRow().Style.Font.Bold = true;//首行字体加粗
worksheet.RangeUsed().FirstRow().Style.Fill.BackgroundColor = XLColor.LightGray;//首行背景颜色
worksheet.RangeUsed().FirstRow().Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;//首行字体居中
//首行创建筛选功能
worksheet.RangeUsed().FirstRow().SetAutoFilter();
for (int i = 0; i < dt.Rows.Count; i++)
{
row++;
for (int j = 0; j < dt.Columns.Count; j++)
{
worksheet.Cell(row, j + 1).Value = dt.Rows[i][dt.Columns[j].ColumnName];
}
}
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return content;
}
}
}
}
三、实现效果
四、总结
ClosedXML 是一个具备强大功能、使用简便且性能出众的.NET Excel 库,非常适用于 Excel 文件操作开发,平时我做项目的时候非常喜欢用这个库。