C# NPOI操作EXCEL之写数据、设置单元格样式、合并单元格、插入图片

您所在的位置:网站首页 excel如何设置单元格区域合并数据 C# NPOI操作EXCEL之写数据、设置单元格样式、合并单元格、插入图片

C# NPOI操作EXCEL之写数据、设置单元格样式、合并单元格、插入图片

2024-07-16 23:12| 来源: 网络整理| 查看: 265

这段时间做项目,刚好碰到需要往Excel写数据,网上的资料零零散散,故自己花时间整理下。已测试过可直接运行。

 

1.涉及文件: NPOI.dll、NPOI.OOXML.dll、NPOI.OpenXml4Net.dll、NPOI.OpenXmlFormats.dll、NPOI.xml、ICSharpCode.SharpZipLib.dll

using System.IO;using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;

2.往EXCEL写数据、合并单元格、设置字体样式、插入图片

namespace Task_Test { public class ExcelHelper { public static void WriteExcel() { string templateFile = @"C:\test\temple.xlsx"; // 文件必须存在 string outFile = @"C:\test\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx"; string picPath = @"C:\test\test.jpg"; IWorkbook workbook = null; FileStream file = new FileStream(templateFile, FileMode.Open, FileAccess.Read); if (Path.GetExtension(templateFile) == ".xls") { workbook = new HSSFWorkbook(file); } else if (Path.GetExtension(templateFile) == ".xlsx") { workbook = new XSSFWorkbook(file); } ISheet sheet = workbook.GetSheetAt(0); try { SetCellValue(sheet, 0, 0, "这里是第1行第1列内容"); SetCellValue(sheet, 0, 1, "这里是第1行第2列内容"); SetCellValue(sheet, 1, 0, "这里是第2行第1列内容"); SetCellValue(sheet, 1, 1, "这里是第2行第2列内容"); // Height:单位是1/20个点,所以要想得到一个点的话,需要乘以20。 sheet.GetRow(1).Height = 44 * 20; // 给第2行设置行高 // Width: 单位是1/256个字符宽度,所以要乘以256才是一整个字符宽度 sheet.SetColumnWidth(1, 50 * 256); // 给第1列设置宽度 SetCellValue(sheet, 2, 0, "这里是第3行第1列内容,需要设置字体样式"); // 从第3行到第6行,第1列到第4列合并单元格 SetCellRangeAddress(sheet, 2, 5, 0, 3); // 给合并之后的单元格加边框,并设置字体大小、居中、字体颜色、背景色 AddRengionBorder(workbook, sheet, 2, 5, 0, 3); // 插入图片 InsertFootSignPic(workbook, sheet, 7, 16, 0, 2, outFile, picPath); } catch (Exception ex) { throw ex; } finally { if (file != null) { file.Close(); } } } /// /// 单元格设置内容 /// /// /// 第几行,从0开始 /// 第几列,从0开始 /// 内容(字符串) public static void SetCellValue(ISheet sheet, int rowIndex, int cellIndex, string value) { if (sheet.GetRow(rowIndex) == null) { sheet.CreateRow(rowIndex); } if (sheet.GetRow(rowIndex).GetCell(cellIndex) == null) { sheet.GetRow(rowIndex).CreateCell(cellIndex); } sheet.GetRow(rowIndex).GetCell(cellIndex).SetCellValue(value); } /// /// 合并单元格 /// /// 要合并单元格所在的sheet /// 开始行的索引 /// 结束行的索引 /// 开始列的索引 /// 结束列的索引 public static void SetCellRangeAddress(ISheet sheet, int rowstart, int rowend, int colstart, int colend) { for (int r = rowstart; r


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3