1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C# 操作Excel文件之NPOI (三)

C# 操作Excel文件之NPOI (三)

时间:2023-05-27 00:17:02

相关推荐

C# 操作Excel文件之NPOI (三)

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

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

先来看下我们的数据源

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

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

实现功能:

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

开发环境:

开发工具: Visual Studio

.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);//Offic以上IWorkbook workbook = new XSSFWorkbook();//Offic以下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))){}}*///读取图片转为byteImage 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的常用功能就差不多了,大家可以尝试下应用到日常办公中,会方便很多我们一些日常繁琐的工作。。。

由简入繁,拿来即用

更多精彩,请关注微信公众号:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。