C#NPOI示例
主程序要添加NPOI的库。代码如下
static void Main(string[] args)
{
Export();
}
public static void Export()
{
// 创建新的Excel工作簿
IWorkbook workbook = new XSSFWorkbook(); // 创建一个工作表
ISheet sheet = workbook.CreateSheet("Sheet1"); // 创建合并单元格的样式
ICellStyle cellStyle = workbook.CreateCellStyle();
cellStyle.Alignment = HorizontalAlignment.Center;
cellStyle.VerticalAlignment = VerticalAlignment.Center; //设置字体
IFont font = workbook.CreateFont();
font.FontHeightInPoints = 12;
font.FontHeight = 4 * 60;
font.FontName = "宋体";
font.IsBold = true;
cellStyle.SetFont(font); // 设置边框样式为实线
cellStyle.BorderTop = BorderStyle.Thin;
cellStyle.BorderBottom = BorderStyle.Thin;
cellStyle.BorderLeft = BorderStyle.Thin;
cellStyle.BorderRight = BorderStyle.Thin; // 创建合并单元格
int row = 0; // 指定的行号
int cell = 0; // 在合并后的单元格中设置值和样式
IRow row1 = sheet.CreateRow(row);
IRow row2 = sheet.CreateRow(row + 1);
row1.Height = 20 * 20;
row2.Height = 20 * 20; // 创建合并单元格
CellRangeAddress cellRangeAddress = new CellRangeAddress(row, row + 1, cell, cell);
sheet.AddMergedRegion(cellRangeAddress);
ICell cell0 = row1.CreateCell(row);
cell0.SetCellValue("机器编号");
cell0.CellStyle = cellStyle; //自定义行宽
sheet.SetColumnWidth(row, 20 * 256); cellRangeAddress = new CellRangeAddress(row, row + 1, cell + 1, cell + 1);
sheet.AddMergedRegion(cellRangeAddress);
ICell cell1 = row1.CreateCell(cell + 1);
cell1.SetCellValue("位置");
cell1.CellStyle = cellStyle; //自定义行宽
sheet.SetColumnWidth(row + 1, 30 * 256); cellRangeAddress = new CellRangeAddress(row, row, cell + 2, cell + 3);
sheet.AddMergedRegion(cellRangeAddress);
ICell cell2 = row1.CreateCell(cell + 2);
cell2.SetCellValue("自费结算"); cellRangeAddress = new CellRangeAddress(row, row, cell + 4, cell + 9);
sheet.AddMergedRegion(cellRangeAddress);
ICell cell3 = row1.CreateCell(cell + 4);
cell3.SetCellValue("医保结算");
cell3.CellStyle = cellStyle; #region 如果创建这个列,会导致实线边框样式无法呈现
row1.CreateCell(cell + 9).SetCellValue("");
//被占跨行合并的第二行第一第二列
row2.CreateCell(cell + 0).SetCellValue("");
row2.CreateCell(cell + 1).SetCellValue("");
//被占跨行合并的第二行第一第二列
#endregion row2.CreateCell(cell + 2).SetCellValue("自费结算笔数");
row2.CreateCell(cell + 3).SetCellValue("自费结算金额(元)");
row2.CreateCell(cell + 4).SetCellValue("医保卡笔数");
row2.CreateCell(cell + 5).SetCellValue("医保卡个账金额(元)");
row2.CreateCell(cell + 6).SetCellValue("医保电子凭证笔数");
row2.CreateCell(cell + 7).SetCellValue("医保电子凭证个账金额(元)");
row2.CreateCell(cell + 8).SetCellValue("人脸医保笔数");
row2.CreateCell(cell + 9).SetCellValue("人脸医保个账金额(元)");
cell2.CellStyle = cellStyle; var irow = sheet.GetRow(1);
SetColumnWidth(sheet, row + 2, row + 9, 22 * 256);
SetCellStyle(sheet, 0, 1, 0, 9, cellStyle); // 写入到文件
using (FileStream file = new FileStream("merged_cells.xlsx", FileMode.Create, FileAccess.Write))
{
workbook.Write(file);
} } /// <summary>
/// 设置列宽宽度
/// </summary>
public static void SetColumnWidth(ISheet sheet, int fristSolumn, int endSolumn, int intWidth)
{
for (int i = fristSolumn; i <= endSolumn; i++)
{
sheet.SetColumnWidth(i, intWidth);
}
} /// <summary>
/// 给单元格四周加黑色边框
/// </summary>
/// <param name="sheet">单元格所在的sheet</param>
/// <param name="rowstart">开始行的索引</param>
/// <param name="rowend">结束行的索引</param>
/// <param name="colstart">开始列的索引</param>
/// <param name="colend">结束列的索引</param>
public static void SetCellStyle(ISheet sheet, int rowstart, int rowend, int colstart, int colend, ICellStyle cellStyle)
{
for (int i = rowstart; i <= rowend; i++)
{
var irow = sheet.GetRow(i);
if (irow != null && irow.Cells != null && irow.Cells.Count > 0)
{
for (int j = 0; j < irow.Cells.Count; j++)
{
irow.Cells[j].CellStyle = cellStyle;
}
}
}
}
C#NPOI示例的更多相关文章
- NPOI导出Excel示例
摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)
自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...
- 關於NPOI的一點補充和示例
最近看到很多人分享NPOI的用法. 但是很多都不是完整示例或者並沒有實戰效果. 剛好最近有個VB.NET的項目有升級原有的oledb select sheet$的做法. 很明顯,NPOI有更好的穩定性 ...
- NET使用NPOI组件导出Excel-入门示例及通用方法
一.Excel导入及导出问题产生: 从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题: 导出问题: 如果是as ...
- PowerBuilder中调用NPOI进行Excel导出格式设置示例
// 功能 :新建excel带边框的单元格,格式为数字并显示为美元货币 // 参数 :ai_row,行号:ai_col,列号 // 返回值 :true/false // 作者 :潮崖之飔 // 日期 ...
- C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享
using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls")) ...
- c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享
string sql = @"select * from T_Excel"; ----------------DataTable Star---------------- ...
- NPOI 列宽自适应 代码示例
//列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...
- .NET Core 首例 Office 开源跨平台组件(NPOI Core)
前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...
- (C#)使用NPOI导出Excel
在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...
随机推荐
- 基于ctfshow的信息收集思路与CTF实战
本文靶场来源于CTFshow,并不完全按照靶机的顺序排列,而是以测试操作为导向,按博主个人理解排列. 1. 前端源码 在CTF中,先看源代码是个好习惯,出题者经常会在源代码中以注释的形式提供一些提示 ...
- 鸿蒙NEXT开发案例:计数器
[引言](完整代码在最后面) 本文将通过一个简单的计数器应用案例,介绍如何利用鸿蒙NEXT的特性开发高效.美观的应用程序.我们将涵盖计数器的基本功能实现.用户界面设计.数据持久化及动画效果的添加. [ ...
- tsconfig配置详解
{ "compilerOptions": { /* Basic Options */ "target": "es5" /* target用于 ...
- 记录一个Linux代码移植到Windows平台下的Visual Studio 2022的代码编码格式的问题
一.前言 工作上与公司的前辈对接,他给了我一份在linux下面编写的代码压缩包,按照道理来说使用条件宏编译不同的windows和linux的API即可实现代码的通用.但是我在Visual Studio ...
- 简述GoLang优势与生态
开门见山,一睹golang的风采 性能优势 部署运维成本低 编码格式统一:测试简单 1. 性能优势 Go 语言被称为是:"21世纪的C语言",虽然这个帽子戴的有点高,不妨这里给大家 ...
- The 2023 ICPC Asia Hong Kong Regional Programming Contest
The 2023 ICPC Asia Hong Kong Regional Programming Contest A. TreeScript 给你一个根,让你构造一棵树,每个节点被创造的时候必须知道 ...
- 怎么实时更新echarts图标数据?
function getData(){ var request . nem XPHLHttpRequest () ; request . open("get",'http://lo ...
- 中电金信:四川农担X中电金信大数据智能风控平台 护航金融服务乡村振兴
高质量金融服务是乡村振兴的重要支撑.四川省农业融资担保有限公司(以下简称"四川农担")持续探索融资担保服务,努力满足"三农"领域多样化.多层次融资担保需求的同 ...
- gradle 很棒
一直以为 gradle 就是 maven 的一个易读版,表达上比 XML 更精简了,实际上还是maven,似乎没有存在的必要. 但是,万万没想到,这玩意儿竟然是一个语言,竟然可以调试!也就是说,它不是 ...
- Idea如何关闭单词拼写检查
打开Intellij Idea,在代码中输入lisi或zhangsan单词,可见这两个单词下面出现了绿色波浪线,表明词库中找不到这两个单词 2 鼠标移到波浪线上,可以看到如下提示信息,点击[more] ...