C#,使用NPOI,导出excel文件
/// <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文件的更多相关文章
- 使用NPOI导出Excel文件
使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...
- 关于NPOI导出excel文件(xls和xlsx两种格式)提示格式不符的问题
这两天在做导出excel文件的时候遇到这个问题 本来我导出的格式是xlsx格式的,但是下载得到的文件格式变成了xls, 一开始以为是返回的contenttype设置错了 return File(ms, ...
- 基于Vue + axios + WebApi + NPOI导出Excel文件
一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...
- C# 未安装Office环境下使用NPOI导出Excel文件
1.NuGet直接安装NPOI程序包: 2. using NPOI.XSSF.UserModel; 3.导出Excel代码: private void TsbExport2ExcelClick(obj ...
- asp.net Mvc 使用NPOI导出Excel文件
1.新建MVC项目,新建控制器.视图 添加控制器: 添加视图(将使用布局页前面的复选框里的勾勾去掉) 2.在Models里新建一个类 public class Shop { /// <summa ...
- C# DataGridview用NPOI导出Excel文件
导出excel我用的是nuget 的NPOI,直接在项目中添加的,引用到项目中,下面是截图: 下面我把ExcelHelper贴出来 public static class ExcelHelper { ...
- 使用 NPOI 导出 Excel 文件
[NPOI简介] NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者 ...
- NPOI导出Excel文件,对单元格的一些设置
HSSFWorkbook book = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); ISheet sheet = book.Cr ...
- 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密
使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...
随机推荐
- Python爬取全球是最大的电影数据库网站IMDb数据
在使用 Python 开发爬虫的过程中,requests 和 BeautifulSoup4(别名bs4) 应用的比较广泛,requests主要用于模拟浏览器的客户端请求,以获取服务器端响应,接收到的响 ...
- MYSQL索引的建立、删除以及简单使用
一.前期数据准备 1.建表 CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAUL ...
- 零基础学Java(1)初识Java程序
前言 就国内来说,Java毫无疑问是后端语言中的No.1没有之一,所以今天我们也来0基础学习Java!!! Java的好处(针对测试工程师) 面试加分->涨薪 大多数公司服务端用的都是Java, ...
- Tapdata 在线研讨会:DaaS vs 大数据平台,是竞争还是共处?
从20年前的传统数仓,到10年前大数据平台,5年前开始火热的数据中台以及最近出现的湖仓一体新数据平台,今天被数据孤岛困扰的企业,面临着太多的选择.这些数据产品及架构有一个共性:他们本质上解决的大部分都 ...
- go-zero微服务实战系列(十、分布式事务如何实现)
在分布式应用场景中,分布式事务问题是不可回避的,在目前流行的微服务场景下更是如此.比如在我们的商城系统中,下单操作涉及创建订单和库存扣减操作两个操作,而订单服务和商品服务是两个独立的微服务,因为每个微 ...
- 升级了Springboot版本后项目启动不了了
问题背景 项目上使用的springboot版本是2.1.1.RELEASE,现在因为要接入elasticsearch7.x版本,参考官方文档要求,需要将springboot版本升级到2.5.14. 本 ...
- Template -「高斯消元」
#include <cstdio> #include <vector> #include <algorithm> using namespace std; doub ...
- Solution -「Luogu 3959」 宝藏
果真是宝藏题目. 0x01 前置芝士 这道题我是真没往状压dp上去想.题目来源. 大概看了一下结构.盲猜直接模拟退火!\xyx 所需知识点:模拟退火,贪心. 0x02 分析 题目大意:给你一个图,可能 ...
- TCP通信的概述
- Docker 好用的镜像
Docker 官方镜像 1.个人博客空间wordpress 2.开源管理系统odoo 3.开发文档生成工具star7th/showdoc.(启动说明文档https://www.showdoc.com. ...