首页 > 编程语言 >C# 导出DataTable到Excel

C# 导出DataTable到Excel

时间:2022-10-10 11:55:05浏览次数:48  
标签:style sheet C# Excel NPOI SS UserModel dt DataTable

 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即可。

标签:style,sheet,C#,Excel,NPOI,SS,UserModel,dt,DataTable
From: https://www.cnblogs.com/smartnn/p/16775134.html

相关文章

  • C# 写入文件流
    1///<summary>2///写入文件流3///</summary>4///<paramname="filePath">文件路径(包括文件名和后缀)</param>5///<paramname="data">要存储的数据</pa......
  • php中header函数参数的Cache-control的使用方法
    网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为......
  • acwing.第72场周赛 t3最小移动距离
    AcWing4626.最小移动距离原题链接:https://www.acwing.com/problem/content/4629/思路要求对于每一个点x都满足走过t,到达一个目标点y.并且x和y都可以互为目标点。找出......
  • Docker学习(二)常用命令
    一、帮助启动类命令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestartdocker查看docker状态:systemctlstatusdocker......
  • Java-Day04 Scanner/if-else/switch-case/for
    2022/10/9一、Scanner:从键盘获取数据1.要使用Scanner首先需要导入包:importjava.util.Scanner;2.使用方法:Scanner变量名=newScanner(System.in);/......
  • C# 获取本地IP地址
    1///<summary>2///获取本地的IP地址3///</summary>4///<returns></returns>5publicstaticstringGetAddressIP()6{7stringAddressIP=st......
  • CentOS 配置免密登录
    1、跳板机操作:连续三次回车,生成私钥和密钥ssh-keygen-trsa 2、ssh-copy-id-i/root/.ssh/id_rsa.pub192.168.1.100//依次输入yes,123456(root用户的密码)ssh-......
  • MyBatis之ResultMap的association和collection标签详解
    一、前言MyBatis创建时的一个思想是:数据库不可能永远是你所想或所需的那个样子。我们希望每个数据库都具备良好的第三范式或BCNF范式,可惜它们并不都是那样。如果能有一......
  • SAP UI5 Tools 的 Custom UI5 Server Middleware 介绍
    UI5服务器可扩展性(Extensibility)使开发人员能够增强UI5服务器的功能。开发人员可能希望以不同的方式处理请求。例如,将各种标头添加到响应中(一个最典型的应用就是避......
  • 如何实现汇川PLC和工业机器人的协议解析与数据采集?
    汇川是一家专注于工业自动化的设备制造商,具备一整套完善的产品与服务,涉及变频器、伺服系统、PLC、HMI触摸屏、电动汽车电机控制器、光伏逆变器等等,在制造业、新能源、环保节......