咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

此方式会通过3篇文章将关于Excel的一些日常操作给实现出来,分别为:读取、写入、格式设置等;

本篇要记录的是使用NPOI设置Excel的格式。

先来看下我们的数据源

现在我们要将它导出到Excel中,并设置一些样式,根据以下代码,我们最终代码实现的效果如下:

为什么我要实现这么丑的操作呢?毕竟我想介绍的只是功能。。。

实现功能:

    • 使用NPOI的方式实现Excel颜色、字体、公式,图片等操作

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码:

首先需要导入以下命名空间:

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

DataTable dt = dataGridView1.DataSource as DataTable; //指定excel所在路径 string excelPath = "d:\2.xlsx"; //以文件流创建excel文件 FileStream fs = new FileStream(excelPath, FileMode.OpenOrCreate, FileAccess.ReadWrite); //Offic2007以上 IWorkbook workbook = new XSSFWorkbook(); //Offic2007以下 if (excelPath.ToLower().EndsWith(".xls")) { workbook = new HSSFWorkbook(); } //创建一个sheet页 ISheet sheet = workbook.CreateSheet("sheet1"); //创建第一行数据并将表头写进去 IRow rowHead = sheet.CreateRow(0); for (int j = 0; j < dt.Columns.Count; j++) { rowHead.CreateCell(j).SetCellValue(dt.Columns[j].ColumnName); } //将数据逐行写入 for (int i = 0; i < dt.Rows.Count; i++) { IRow row = sheet.CreateRow(i + 1); for (int j = 0; j < dt.Columns.Count; j++) { row.CreateCell(j).SetCellValue(Convert.ToString(dt.Rows[i][j])); } } //创建样式 ICellStyle style = workbook.CreateCellStyle(); //设置单元格居中 style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; style.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Center; //新建一个字体样式对象 IFont font = workbook.CreateFont(); //设置字体大小 font.FontHeightInPoints = 14; //设置字体加粗 font.IsBold = true; //设置字体颜色 font.Color = HSSFColor.Red.Index; style.SetFont(font); //设置行的高度 rowHead.Height = 800; //设置列的宽度 sheet.SetColumnWidth(0, 5000); //设置单元格样式 rowHead.GetCell(2).CellStyle = style; //设置单元格合并 //CellRangeAddress参数分别为:起始行,结束行,起始列,结束列 //索引从0开始 sheet.AddMergedRegion(new CellRangeAddress(4, 5, 0, 2)); //设置单元格公式 ICell cell2 = sheet.CreateRow(dt.Rows.Count + 1).CreateCell(2); cell2.CellFormula = "C2+C3"; /*以下代码可判断单元格格式是否为公式 if (rowHead.GetCell(1).CellType == CellType.Formula) { //判断单元格值是什么类型 if (HSSFDateUtil.IsCellDateFormatted(rowHead.GetCell(1))) { } } */ //读取图片转为byte Image img = Image.FromFile("d:\c.png"); MemoryStream ms = new MemoryStream(); img.Save(ms, ImageFormat.Png); byte[] b = ms.ToArray(); int picIndex=workbook.AddPicture(b, PictureType.PNG); IDrawing patriarch = sheet.CreateDrawingPatriarch(); //在第9行第5列插入大小为 高8行宽6列的图片(索引从0开始) XSSFClientAnchor anchor = new XSSFClientAnchor { Row1 = 8, Row2 = 16, Col1 = 4, Col2 = 10 }; patriarch.CreatePicture(anchor, picIndex); workbook.Write(fs); fs.Close(); workbook.Close();

至此,关于NPOI操作Excel的常用功能就差不多了,大家可以尝试下应用到日常办公中,会方便很多我们一些日常繁琐的工作。。。

由简入繁,拿来即用

后续精彩,持续关注