C# 导出DataTable到Excel

复制代码
 1 /// <summary>
 2 /// 将DataTable数据,存储到一个Excel中(.xlsx)
 3 /// </summary>
 4 /// <param name="dt"></param>
 5 /// <param name="filePath"></param>
 6 public static void ExportExcel(DataTable dt, string filePath)
 7 {
 8     // 创建工作表
 9     XSSFWorkbook workbook = new XSSFWorkbook();
10     var sheet = workbook.CreateSheet(dt.TableName);
11     // 单元格样式
12     ICellStyle style = workbook.CreateCellStyle();
13     style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
14     style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
15     style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
16     style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
17     // 创建标题行
18     var rowTilte = sheet.CreateRow(0);
19     // 创建标题行单元格名称
20     for (int c = 0; c < dt.Columns.Count; c++)
21     {
22         var cellid = rowTilte.CreateCell(c);
23         cellid.SetCellValue(dt.Columns[c].ColumnName);
24         rowTilte.Cells[c].CellStyle = style;
25     }
26     // 写数据
27     for (int i = 0; i < dt.Rows.Count; i++)
28     {
29         var rowData = sheet.CreateRow(i + 1);
30         for (int c = 0; c < dt.Columns.Count; c++)
31         {
32             var cellid = rowData.CreateCell(c);
33             cellid.SetCellValue(dt.Rows[i][c].ToString());
34             rowData.Cells[c].CellStyle = style;
35         }
36     }
37     // 列宽自动
38     for (int c = 0; c < dt.Columns.Count; c++)
39     {
40         sheet.AutoSizeColumn(c);
41     }
42     // 写文件
43     FileStream file = new FileStream(filePath, FileMode.CreateNew, FileAccess.Write);
44     workbook.Write(file);
45     file.Dispose();
46 }
复制代码

依赖

NPOI.SS.UserModel
NPOI.XSSF.UserModel

 备注:如果要导出DataSet,只需要遍历DataSet的DataTable新建sheet即可。

posted @   Mr_Xul  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示