/// <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. 再测云原生数据库性能:PolarDB依旧最强,TDSQL-C、GaussDB变化不大

    1.摘要 近期,腾讯云数据库在文章「腾讯云TDSQL-C重磅升级,性能全面领跑云原生数据库市场」中提到,某些场景下性能有非常大的提升,且超过国内某橙色云厂商.恰好,在5月份,我们对各个厂商的云原生数据 ...

  2. 让你的Nginx支持分布式追踪

    Background NGINX 是一个通用且流行的应用程序.也是最流行的 Web 服务器,它可用于提供静态文件内容,但也通常与其他服务一起用作分布式系统中的组件,在其中它用作反向代理.负载均衡 或 ...

  3. java中的变量及命名

    变量 变量顾名思义就是可以变化的量 因为java是强类型语言,所以每个变量都必须声明其类型 java变量是最基本的存储单元,要素包括变量名称,变量类型和作用域. 目录 变量 1.常用的变量创建 2.变 ...

  4. 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]

    ASP.NET Core应用本质上就是一个由中间件构成的管道,承载系统将应用承载于一个托管进程中运行起来,其核心任务就是将这个管道构建起来.在ASP.NET Core的发展历史上先后出现了三种应用承载 ...

  5. FFT 学习笔记(自认为详细)

    引入 什么是 \(\text{FFT}\) ? 反正我看到 \(\text{wiki}\) 上是一堆奇怪的东西. 快速傅里叶变换(英语:Fast Fourier Transform, FFT),是快速 ...

  6. XML方式配置切面

    1. 概述  一个切面中需要包含什么,才能够作用到连接点?切面中是包含通知的,通知作用到连接点需要有切入点表达式. 除了使用AspectJ注解声明切面,Spring也支持在bean配置文件中声明切面. ...

  7. 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

    上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...

  8. 如何在Excel/WPS表格中批量查询顺丰快递信息?

    如何在Excel/WPS表格中批量查询顺丰快递信息? 上期我们讲了如何在Excel/WPS表格中批量查询快递信息(还不知道的小伙伴可以看这里:https://zhuanlan.zhihu.com/p/ ...

  9. mysql Insert强化

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({e ...

  10. 利用CSS3自定义属性来为网站添加“暗黑模式”(暗色模式/DarkMode)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_114 究竟什么是暗黑模式?这个概念起初来源于macOS系统,该系统的mojave版本为用户提供两个主题皮肤,即浅色和深色的皮肤.自 ...