- 首先我们在 NuGet程序包管理中下载 NPOI组件 目前版本稳定的是:2.4.1
- 这里可以看一下NPOI下载完成后生成的四个引用,其作用
- 然后废话也不多说了,直接上代码
- 然后我们在项目中进行引用
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;
点击查看代码
/// <summary>
/// 将 DataTable 导出至 Excel 文件
/// </summary>
/// <param name="dt">数据表</param>
/// <param name="filePath">文件路径(包括文件名和扩展名)</param>
public static string ExportToExcel(DataTable dt, string filePath, out string err)
{
// 判断数据表是否为空
if (dt == null || dt.Rows.Count == 0)
{
throw new Exception("要导出的数据表不能为空!");
}
// 判断文件路径是否为空
if (string.IsNullOrWhiteSpace(filePath))
{
throw new Exception("文件路径不能为空!");
}
// 获取文件扩展名
string fileExt = Path.GetExtension(filePath).ToLower();
// 根据文件扩展名创建工作簿对象
IWorkbook wb = null;
switch (fileExt)
{
case ".xlsx":
wb = new XSSFWorkbook();
break;
case ".xls":
wb = new HSSFWorkbook();
break;
case ".csv":
wb = new HSSFWorkbook();
break;
default:
throw new Exception("不支持的文件格式!");
}
// 创建工作表对象
ISheet sheet = wb.CreateSheet();
// 创建表头行,并填充表头内容
IRow headerRow = sheet.CreateRow(0);
for (int i = 0; i < dt.Columns.Count; i++)
{
headerRow.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName);
}
// 填充数据行
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow dataRow = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
dataRow.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString());
}
}
filePath = @"D:\temp\" + filePath;
// 保存 Excel 文件
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
wb.Write(fs);
// 自动打开生成的文件夹
System.Diagnostics.Process.Start("explorer.exe", "文件地址");
}
}
}