/// <summary>
/// 导出excel文件
/// </summary>
/// <param name="dt">Table表数据</param>
/// <param name="path">存放路径 ( string path = System.Environment.CurrentDirectory + "\\";)</param>
public void exportWPS_excel(DataTable dt, string path)
{
//创建excel工作薄
IWorkbook wb = new HSSFWorkbook();
//创建excel单元格样式
ICellStyle cellStyle = wb.CreateCellStyle();
//水平对齐
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
//垂直对齐
cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;

IFont font = wb.CreateFont();
//创建表
IDataFormat format = wb.CreateDataFormat();
ISheet sh = wb.CreateSheet("Table");

var newrow = sh.CreateRow(0); //第一行
newrow.CreateCell(0);
newrow.Cells[0].SetCellValue("2021年");//表头标题
ICellStyle headStyle0 = wb.CreateCellStyle();
headStyle0.WrapText = true;
IFont fontt = wb.CreateFont();
fontt.FontHeightInPoints = 12; //字体大小
fontt.Boldweight = short.MaxValue;//设置字体加粗样式
headStyle0.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
headStyle0.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
headStyle0.SetFont(fontt);
newrow.GetCell(0).CellStyle = headStyle0;
int count = dt.Columns.Count - 2;
sh.AddMergedRegion(new CellRangeAddress(0, 0, 0, dt.Columns.Count - 1));//合并单元格(起始行,终止行,起始列,终止列)

#region 表头及样式
int cellIndex = 0;
IRow headerRow = sh.CreateRow(1);//第二行
for (int i = 0; i < dt.Columns.Count; i++)
{
//设置行高
headerRow.HeightInPoints = 25;
headerRow.CreateCell(cellIndex).SetCellValue(tablename(dt.Columns[i].ColumnName));
ICellStyle headStyle = wb.CreateCellStyle();
sh.AutoSizeColumn(cellIndex);//自适应宽度
headStyle.WrapText = true;
font.FontHeightInPoints = 12; //字体大小
font.Boldweight = short.MaxValue;//设置字体加粗样式
headStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center;
headStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
headStyle.SetFont(font);
headerRow.GetCell(cellIndex).CellStyle = headStyle;
cellIndex++;
}
#endregion
#region 数据填充
int rowIndex = 2;//行数一定要从2行开始,因为上面已经创建了标题为0行,数据表头为1行;
foreach (DataRow row in dt.Rows)
{
int ColumnIndex = 0;
IRow dataRow = sh.CreateRow(rowIndex);
foreach (DataColumn column in dt.Columns)
{
ICell newCel0 = dataRow.CreateCell(ColumnIndex);//序号
dataRow.GetCell(ColumnIndex).CellStyle = cellStyle;
cellStyle.DataFormat = format.GetFormat("text");//数据类型
newCel0.SetCellValue(row[column.ColumnName].ToString());
sh.AutoSizeColumn(ColumnIndex);//自适应宽度
ColumnIndex++;

}
rowIndex++;
}
#endregion

int rows = dt.Rows.Count + 2;//获取dt行数
var newroww = sh.CreateRow(rows); //添加总结行
newroww.CreateCell(0);
newroww.Cells[0].SetCellValue("共" + dt.Rows.Count + "个标本");

//设置新建文件路径及名称
string savePath = path + "导出Excel\\" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".xls";
using (FileStream fileStream = File.OpenWrite(savePath))
{
wb.Write(fileStream);
MessageBox.Show("提示:创建成功!");
}

}

最终导出后如图

C#,使用NPOI,导出excel文件的更多相关文章

  1. 使用NPOI导出Excel文件

    使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...

  2. 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题

    这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...

  3. 基于Vue + axios + WebApi + NPOI导出Excel文件

    一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...

  4. C# 未安装Office环境下使用NPOI导出Excel文件

    1.NuGet直接安装NPOI程序包: 2. using NPOI.XSSF.UserModel; 3.导出Excel代码: private void TsbExport2ExcelClick(obj ...

  5. asp.net Mvc 使用NPOI导出Excel文件

    1.新建MVC项目,新建控制器.视图 添加控制器: 添加视图(将使用布局页前面的复选框里的勾勾去掉) 2.在Models里新建一个类 public class Shop { /// <summa ...

  6. C# DataGridview用NPOI导出Excel文件

    导出excel我用的是nuget 的NPOI,直接在项目中添加的,引用到项目中,下面是截图: 下面我把ExcelHelper贴出来 public static class ExcelHelper { ...

  7. 使用 NPOI 导出 Excel 文件

    [NPOI简介] NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者 ...

  8. NPOI导出Excel文件,对单元格的一些设置

    HSSFWorkbook book = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); ISheet sheet = book.Cr ...

  9. 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密

    使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...

随机推荐

  1. HTML入门,基础知识

    初识HTML HTML: 超文本标记语言 一.HTML的基本结构 根控制标记(头) ​ 头控制标记(头) ​ 标题 标题标记 ​ 头控制标记(尾) ​ 网页显示区域(一般要实现的代码都在这里写) &l ...

  2. 一键部署bash脚本怎么写

    因为我开源的一键部署应用到linux服务器的AntDeploy, 在linux部署是需要安装一个agent服务(systemctl服务) 如果是手动第一次安装的话 需要敲 下载 wget 解压 tar ...

  3. RocketMQ之消费者启动与消费流程

    vivo 互联网服务器团队 - Li Kui 一.简介 1.1 RocketMQ 简介 RocketMQ是由阿里巴巴开源的分布式消息中间件,支持顺序消息.定时消息.自定义过滤器.负载均衡.pull/p ...

  4. IIS部署的H5的单页面跳转的配置

    <?xml version="1.0" encoding="UTF-8"?><configuration> <system.web ...

  5. MySQL语句与正则表达式

    正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较.MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据. 1.元字符说明 ...

  6. 从零开始手写Cartographer(1): 开端

    写在前面的话 我做SLAM已经三年了.读书时初学SLAM,一开始无从下手,直到读了高博士的博客,茅塞顿开,渐入佳境.后来又买了他的<视觉SLAM十四讲>,常伴手边,直至毕业.几个月前找工作 ...

  7. 一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式

    Pinia和Vuex一样都是是vue的全局状态管理器.其实Pinia就是Vuex5,只不过为了尊重原作者的贡献就沿用了这个看起来很甜的名字Pinia. 本文将通过Vue3的形式对两者的不同实现方式进行 ...

  8. Airbnb的动态kubernetes集群扩缩容

    Airbnb的动态kubernetes集群扩缩容 本文介绍了Airbnb的集群扩缩容的演化历史,以及当前是如何通过Cluster Autoscaler 实现自定义扩展器的.最重要的经验就是Airbnb ...

  9. maven配置的一个问题

    资源导出问题 如果想和dao接口放在一个包下可以做如下配置,但是如果不放在dao接口下,那就会报错,至于为什么,那就得好好学学maven了,因为下面是yaml的,所以需要添加yaml,不然他扫描不到 ...

  10. display: table-cell里面文字打点的方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...