C#利用NPOI操作Excel(单元格设置)

Brigitte ·
更新时间:2024-11-10
· 1669 次阅读

本文实例为大家分享了C#利用NPOI操作Excel的单元格设置,供大家参考,具体内容如下

一.合并单元格

NOPI支持对单元格进行合并,还有单元格格式设置!

注意:

在进行单元格合并时必须先创建单元格

1.合并单元格语句:

sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 3)); //起始行,终止行,起始列,终止列

2.设置单元格格式:

ICellStyle cellStyle = wk.CreateCellStyle();  //首先建单元格格式   //设置单元格上下左右边框线             cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Hair;  //虚线 cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;//粗线   cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Double;//双线   cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;//细线   //文字水平和垂直对齐方式   cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;   cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Top;   //是否换行   //cellStyle.WrapText = true;  //若字符串过大换行填入单元格 //缩小字体填充   cellStyle.ShrinkToFit = true;//若字符串过大缩小字体后填入单元格 //新建一个字体样式对象 IFont font = wk.CreateFont(); //设置字体加粗样式 font.Boldweight = short.MaxValue; ICell MyCell = sheet.CreateRow(1).CreateCell(1);//创建单元格 MyCell.CellStyle = cellStyle;//赋给单元格   “刚才所创建的单元格格式”

源码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using NPOI; using NPOI.XSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.SS.Util; namespace Excel5 {     class Program     {         static void Main(string[] args)         {             XSSFWorkbook wk = new XSSFWorkbook();             /*ISheet sheet = wk.CreateSheet("例子");             ICellStyle cellStyle = wk.CreateCellStyle();   //设置单元格上下左右边框线               cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Hair;  //虚线 cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thick;//粗线   cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Double;//双线   cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;//细线   //文字水平和垂直对齐方式   cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;   cellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.Top;   //是否换行   //cellStyle.WrapText = true;  //若字符串过大换行填入单元格 //缩小字体填充   cellStyle.ShrinkToFit = true;//若字符串过大缩小字体后填入单元格 //新建一个字体样式对象 IFont font = wk.CreateFont(); //设置字体加粗样式 font.Boldweight = short.MaxValue; ICell MyCell = sheet.CreateRow(1).CreateCell(1); ICell MyCell2 = sheet.CreateRow(0).CreateCell(1); MyCell.CellStyle = cellStyle; //MyCell.SetCellValue("测试格式效果");             using (FileStream fileStream = File.Open("d:\\pratice3.xlsx",               FileMode.OpenOrCreate, FileAccess.ReadWrite))               {               wk.Write(fileStream);               fileStream.Close();               }  */             //创建一个Sheet               ISheet sheet = wk.CreateSheet("例子");             //在第一行创建行             IRow row = sheet.CreateRow(0);             //在第一行的第一列创建单元格             for (int i = 0; i < 10; i++)             {                 ICell cell = row.CreateCell(i);                 if((i)%4==0)                 row.CreateCell(i).SetCellValue("测试");             }             sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 3));//起始行,终止行,起始列,终止列             //row.CreateCell(0).SetCellValue("合并单元格");             using (FileStream fs = File.OpenWrite("d:\\pratice1.xlsx"))             {                 wk.Write(fs);//向打开的这个xls文件中写入并保存。             }             //上一篇教程中生成的文件               string Address = "d:\\pratice1.xlsx"; //指明路径              XSSFWorkbook wk2 = null;             using (FileStream fs = File.Open(Address, FileMode.Open,               FileAccess.Read, FileShare.ReadWrite))               {               //把xlsx文件读入workbook变量里,之后就可以关闭了               wk2 = new XSSFWorkbook(fs);                  fs.Close();               }             using (FileStream fileStream = File.Open("d:\\pratice1.xlsx",               FileMode.OpenOrCreate, FileAccess.ReadWrite))               {               wk2.Write(fileStream);               fileStream.Close();               }               Console.WriteLine("OK");             Console.ReadKey();         }

这是两部分代码,由注释分开了,再测试的时候进行自己调整!

注意:

单元格在进行合并时,会默认保存左上角的值!



npoi 单元 C# 单元格

需要 登录 后方可回复, 如果你还没有账号请 注册新账号