主程序要添加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示例的更多相关文章

  1. NPOI导出Excel示例

    摘要:使用开源程序NPOI导出Excel示例.NPOI首页地址:http://npoi.codeplex.com/,NPOI示例博客:http://tonyqus.sinaapp.com/. 示例编写 ...

  2. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续2篇-模板导出综合示例)

    自ExcelUtility类推出以来,经过项目中的实际使用与不断完善,现在又做了许多的优化并增加了许多的功能,本篇不再讲述原理,直接贴出示例代码以及相关的模板.结果图,以便大家快速掌握,另外这些示例说 ...

  3. 關於NPOI的一點補充和示例

    最近看到很多人分享NPOI的用法. 但是很多都不是完整示例或者並沒有實戰效果. 剛好最近有個VB.NET的項目有升級原有的oledb select sheet$的做法. 很明顯,NPOI有更好的穩定性 ...

  4. NET使用NPOI组件导出Excel-入门示例及通用方法

    一.Excel导入及导出问题产生:   从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题:   导出问题:   如果是as ...

  5. PowerBuilder中调用NPOI进行Excel导出格式设置示例

    // 功能 :新建excel带边框的单元格,格式为数字并显示为美元货币 // 参数 :ai_row,行号:ai_col,列号 // 返回值 :true/false // 作者 :潮崖之飔 // 日期 ...

  6. C# .Net :Excel NPOI导入导出操作教程之将Excel文件读取并写到数据库表,示例分享

    using (FileStream fileReader = File.OpenRead(@"C:\Users\Administrator\Desktop\112.xls"))   ...

  7. c# .Net :Excel NPOI导入导出操作教程之数据库表信息数据导出到一个Excel文件并写到磁盘示例分享

      string sql = @"select * from T_Excel"; ----------------DataTable Star----------------    ...

  8. NPOI 列宽自适应 代码示例

    //列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...

  9. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  10. (C#)使用NPOI导出Excel

    在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...

随机推荐

  1. .NET Core 特性(Attribute)底层原理浅谈

    简介 烂大街的资料不再赘述,简单来说就是给代码看的注释 Attribute的使用场景 Attribute不仅仅局限于C#中,在整个.NET框架中都提供了非常大的拓展点,任何地方都有Attribute的 ...

  2. Ubuntu apt-cache命令查找可用软件包

    本文GoFace给大家讲解下在Ubuntu及相同包管理的linux系统下如何查找可用软件包.在Ubuntu上大家一般使用apt-get安装软件,如果想查找某一包软件仓库中是否有,并不是使用apt-ge ...

  3. 光猫HS8145V6命令一部分(一)

    天翼网关说明书-HS8145V6( PON ONT ),快速入门指南 开启telnet, 登录(用户名root,密码adminHW)后可知一些命令 (部分敏感信息已替换) WAP>display ...

  4. 关于ConditionalOnClass注解

    1. pom文件<optional>标签 在Java开发中,大家肯定在pom文件中添加过依赖(现在没有,以后也肯定会有的),不知道大家对<optional>标签的了解有多少,或 ...

  5. synchronized 关键字测试

    对象上有关键字 package com.study.juc.sync; import java.util.concurrent.TimeUnit; public class Test1 { publi ...

  6. WPS Pro 最新专业版,一站式办公

    聊一聊 随着科技的进步,办公软件已经成为现代人工作和学习中不可或缺的重要工具.无论是在企业.学校还是个人使用中,办公软件都能够帮助我们提高工作效率.组织信息和进行沟通.在众多的办公套件中,微软的Off ...

  7. 为了改一行代码,我花了10多天时间,让性能提升了40多倍---Pascal架构GPU在vllm下的模型推理优化

    ChatGPT生成的文章摘要 这篇博客记录了作者在家中使用Pascal显卡运行大型模型时遇到的挑战和解决方案.随着本地大型模型性能的提升,作者选择使用vllm库进行推理.然而,作者遇到了多个技术难题, ...

  8. 10C++选择结构(4)

    一.switch语句 问题:风之巅小学规定,若测试成绩大于或等于90分为"A",大于或等于70分小于90分为"B",大于或等于60分小于70分为"C& ...

  9. 明察秋毫--用ss工具统计网络栈内存使用

    前言 本文介绍了用ss工具来统计一下当前网络栈的内存使用情况 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS 查看socket内存相关参数,-m 参数 ss -tm State ...

  10. Flutter Package: retry

    Flutter package: retry 传送门 This package provides an easy way to retry asynchronous functions. This i ...