由于XSSF中的XSSFWorkbook和HSSF中的HSSFWorkbook拥有的属性、方法等都是一样的,故下面就已一个为例做为展示,他们都继承与一个接口:IWorkbook(命名空间:using NPOI.SS.UserModel;)

1、创建工作簿

 IWorkbook myHSSFworkbook = new HSSFWorkbook();  //用于创建 .xls
IWorkbook myXSSFworkbook = new XSSFWorkbook(); //用于创建 .xlsx

2、按指定名称创建Sheet

ISheet mysheetHSSF = myHSSFworkbook.CreateSheet("SheetName");

3、创建Sheet中的Row

IRow rowHSSF = mysheetHSSF.CreateRow(0);

4、创建Row中的列Cell并赋值【SetCellValue有5个重载方法 bool、DateTime、double、string、IRichTextString(未演示)】

 rowHSSF.CreateCell().SetCellValue(true);
rowHSSF.CreateCell().SetCellValue(System.DateTime.Now);
rowHSSF.CreateCell().SetCellValue(10.13);
rowHSSF.CreateCell().SetCellValue("学习NPOI!");

5、合并单元格【CellRangeAddress(开始行,结束行,开始列,结束列)】

mysheetHSSF=.AddMergedRegion(new CellRangeAddress(, , , )); //合并单元格第二行从第二列到第三列
IRow SecondRowHSSF = mysheetHSSF.CreateRow(); //添加第二行
SecondRowHSSF.CreateCell().SetCellValue("第一列");
SecondRowHSSF.CreateCell().SetCellValue("第二列到第三列");
SecondRowHSSF.CreateCell().SetCellValue("第四列");

6、设置列宽【SetColumnWidth(列索引,N*256) 第二个参数是列宽 单位是1/256个字符宽度】

mysheetHSSF.SetColumnWidth(, * ); //设置第四列的列宽为30个字符

7、设置行高【Height的单位是1/20个点】

SecondRowHSSF.Height=*; //设置高度为50个点

8、设置单元格对齐方式

 IRow ThirdRowHSSF = mysheetHSSF.CreateRow();
ThirdRowHSSF.Height = * ;
ThirdRowHSSF.CreateCell().SetCellValue("默认对齐");
ThirdRowHSSF.CreateCell().SetCellValue("左对齐");
ThirdRowHSSF.CreateCell().SetCellValue("居中");
ThirdRowHSSF.CreateCell().SetCellValue("右对齐");
IRow FourthRowHSSF = mysheetHSSF.CreateRow();
FourthRowHSSF.Height = * ;
FourthRowHSSF.CreateCell().SetCellValue("填充单元格");
FourthRowHSSF.CreateCell().SetCellValue("she zhi dan yuan ge liang duan dui qi");
FourthRowHSSF.CreateCell().SetCellValue("跨列居中");
FourthRowHSSF.CreateCell().SetCellValue("分散对齐"); //创建CellStyle
ICellStyle style0 = myHSSFworkbook.CreateCellStyle();
style0.Alignment = HorizontalAlignment.General;//【General】数字、时间默认:右对齐;BOOL:默认居中;字符串:默认左对齐 ICellStyle style1 = myHSSFworkbook.CreateCellStyle();
style1.Alignment = HorizontalAlignment.Left;//【Left】左对齐 ICellStyle style2 = myHSSFworkbook.CreateCellStyle();
style2.Alignment = HorizontalAlignment.Center;//【Center】居中 ICellStyle style3 = myHSSFworkbook.CreateCellStyle();
style3.Alignment = HorizontalAlignment.Right;//【Right】右对齐 ICellStyle style4 = myHSSFworkbook.CreateCellStyle();
style4.Alignment = HorizontalAlignment.Fill;//【Fill】填充 ICellStyle style5 = myHSSFworkbook.CreateCellStyle();
style5.Alignment = HorizontalAlignment.Justify;//【Justify】两端对齐[会自动换行](主要针对英文)
ICellStyle style6 = myHSSFworkbook.CreateCellStyle();
style6.Alignment = HorizontalAlignment.CenterSelection;//【CenterSelection】跨列居中 ICellStyle style7 = myHSSFworkbook.CreateCellStyle();
style7.Alignment = HorizontalAlignment.Distributed;//【Distributed】分散对齐[会自动换行] //【Tips】
// 1.通过ICellStyle的VerticalAlignment属性可以设置垂直对齐模式与水平对齐无异 不再演示
// 2.通过ISheet的SetDefaultColumnStyle(int column, ICellStyle style)方法可以设置整列的默认单元格样式; //将CellStyle应用于具体单元格
ThirdRowHSSF.GetCell().CellStyle = style0;
ThirdRowHSSF.GetCell().CellStyle = style1;
ThirdRowHSSF.GetCell().CellStyle = style2;
ThirdRowHSSF.GetCell().CellStyle = style3; FourthRowHSSF.GetCell().CellStyle = style4;
FourthRowHSSF.GetCell().CellStyle = style5;
FourthRowHSSF.GetCell().CellStyle = style6;
FourthRowHSSF.GetCell().CellStyle = style7;

9、设置单元格背景与图案【Pattern的填充图案没有演示全,下面的图片是效果图】

 IRow FifthRowHSSF = mysheetHSSF.CreateRow();
FifthRowHSSF.CreateCell().SetCellValue("NoFill");
FifthRowHSSF.CreateCell().SetCellValue("SolidForeground");
FifthRowHSSF.CreateCell().SetCellValue("FineDots");
FifthRowHSSF.CreateCell().SetCellValue("AltBars"); //【Tips】
// 1.ForegroundColor(默认黑色)【前景颜色】BackgroundColor(默认为前景颜色的反色)【背景颜色】Pattern(必须指定,默认NoFill)【填充的图案】
// 2.演示中使用 【前景颜色】蓝色 【背景颜色】白色 //创建CellStyle并应用于单元格
ICellStyle Blackstyle0 = myHSSFworkbook.CreateCellStyle(); Blackstyle0.FillBackgroundColor = IndexedColors.White.Index;
Blackstyle0.FillForegroundColor = IndexedColors.Blue.Index; Blackstyle0.FillPattern = FillPattern.NoFill;
FifthRowHSSF .GetCell().CellStyle = Blackstyle0;
ICellStyle Blackstyle1 = myHSSFworkbook.CreateCellStyle(); Blackstyle1.FillBackgroundColor = IndexedColors.White.Index;
Blackstyle1.FillForegroundColor = IndexedColors.Blue.Index; Blackstyle1.FillPattern = FillPattern.SolidForeground;
FifthRowHSSF .GetCell().CellStyle = Blackstyle1;
ICellStyle Blackstyle2 = myHSSFworkbook.CreateCellStyle(); Blackstyle2.FillBackgroundColor = IndexedColors.White.Index;
Blackstyle2.FillForegroundColor = IndexedColors.Blue.Index; Blackstyle2.FillPattern = FillPattern.FineDots;
FifthRowHSSF .GetCell().CellStyle = Blackstyle2;
ICellStyle Blackstyle3 = myHSSFworkbook.CreateCellStyle(); Blackstyle3.FillBackgroundColor = IndexedColors.White.Index;
Blackstyle3.FillForegroundColor = IndexedColors.Blue.Index; Blackstyle3.FillPattern = FillPattern.AltBars;
FifthRowHSSF .GetCell().CellStyle = Blackstyle3;

10、设置单元格边框

 ICellStyle BorderStyle = myworkbook.CreateCellStyle(); BorderStyle .BorderBottom = BorderStyle.Thin;//设置单元格低边框为细线
//BorderStyle.Medium;【中等线】
//BorderStyle.Dashed;【虚线】
//BorderStyle.Dotted;【斑点线】
//BorderStyle.Thick;【粗线】
//BorderStyle.Double;【双线】
//BorderStyle.Hair;【多点线】
//BorderStyle.MediumDashed;【中等虚线】
//BorderStyle.DashDot;【点线】
//BorderStyle.MediumDashDot;【中等点线】
//BorderStyle.DashDotDot;【双点划线】
//BorderStyle.MediumDashDotDot;【中等双点划线】
//BorderStyle.SlantedDashDot;【倾斜的点划线】
ICellStyle BorderStyle1 = myworkbook.CreateCellStyle();
BorderStyle1.BorderDiagonalLineStyle = BorderStyle.Thin;//BorderDiagonalLineStyle对角线样式 Thin细线
BorderStyle1.BorderDiagonal = BorderDiagonal.Backward;//反向【Forward正向;Both两条线】
BorderStyle1.BorderDiagonalColor = IndexedColors.Red.Index;//红线

11、设置Excel字体

 //设置字体样式
IFont font = myworkbook.CreateFont();
font.Boldweight = (Int16)FontBoldWeight.Bold;//原始字体
//【Tips】
// 1.Boldweight 要使用(Int16)FontBoldWeight 对应的数值 否则无效
font=.Color = IndexedColors.Red.Index; //设置字体颜色
font.FontHeight = ;//设置字体高度【FontHeightInPoints也是设置字体高度,我还不知道有啥区别】
font.FontName = "黑体";//设置字体
font.IsBold = true;//是否加粗
font.IsItalic = true;//是否斜体
font.IsStrikeout = true;//是否加删除线
font.TypeOffset = FontSuperScript.Sub;//设置脚本上的字体【Sub 下;Super 上】
font.Underline = FontUnderlineType.Single;//下划线【Single一条线;Double两条线】
//创建CellStyle并加载字体
ICellStyle Fontstyle = myHSSFworkbook.CreateCellStyle();
Fontstyle.SetFont(font);

12、设置单元格数字格式

 //创建CellStyle与DataFormat并加载格式样式
IDataFormat dataformat = myworkbook.CreateDataFormat();
ICellStyle Numstyle = myworkbook.CreateCellStyle();
Numstyle.DataFormat = dataformat.GetFormat("[DbNum2][$-804]General");//转化为汉字大写
// dataformat.GetFormat("0.0"); //改变小数精度【小数点后有几个0表示精确到小数点后几位】
//dataformat.GetFormat("#,##0.0");//分段添加,号
//dataformat.GetFormat("0.00E+00");//科学计数法
//dataformat.GetFormat("0.00;[Red]-0.00");//正数与负数的区分【负数为红色】
//dataformat.GetFormat("# ??/??");//整数部分+分数
//dataformat.GetFormat("??/??");//分数
//dataformat.GetFormat("0.00%");//百分数【小数点后有几个0表示精确到显示小数点后几位】

13、设置单元格时间格式

 //创建CellStyle与DataFormat并加载格式样式
IDataFormat dataformat = myworkbook.CreateDataFormat();
//【Tips】
// 1.yyyy 年份; yy 年份后两位
// 2.MM 月份零起始;M 月份非零起始; mmm[英文月份简写];mmmm[英文月份全称]
// 3.dd 日零起始;d 日非零起始
// 4.hh 小时零起始;h 小时非零起始[用于12小时制][12小时制必须在时间后面添加 AM/PM 或 上午/下午]
// 5.HH 小时零起始;H 小时非零起始[用于24小时制]
// 6.mm 分钟零起始;m 分钟非零起始
// 7.ss 秒数零起始;s 秒数非零起始
// 8.dddd 星期;ddd 星期缩写【英文】
// 9.aaaa 星期;aaa 星期缩写【中文】
ICellStyle Timestyle = myworkbook.CreateCellStyle();
Timestyle.DataFormat = dataformat.GetFormat("yyyy年MM月dd日 aaaa");【2017年09月01日 星期五】
//dataformat.GetFormat("yyyy年MM月dd日 dddd");【2017年09月01年 Friday】
//dataformat.GetFormat("h:mm:ss AM/PM");【3:51:21 PM】
//dataformat.GetFormat("h:mm:ss 上午/下午");【3:51:21 下午】

14、设置单元格文本格式

 IDataFormat dataformat = myworkbook.CreateDataFormat();

 //【Tips】   使用@ 或 text 都可以
ICellStyle Textstyle = myworkbook.CreateCellStyle(); Textstyle.DataFormat = dataformat.GetFormat("@");
//dataformat.GetFormat("text");

15、插入图片

 //第一步:读取图片到byte数组
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://img1.soufunimg.com/message/images/card/tuanproj/201511/2015112703584458_s.jpg");
byte[] bytes;
using (Stream stream = request.GetResponse().GetResponseStream())
{
using (MemoryStream mstream = new MemoryStream())
{
int count = ;
byte[] buffer = new byte[];
int readNum = ;
while ((readNum = stream.Read(buffer, , )) > )
{
count = count + readNum;
mstream.Write(buffer, , );
}
mstream.Position = ;
using (BinaryReader br = new BinaryReader(mstream))
{ bytes = br.ReadBytes(count);
}
}
} //第二步:将图片添加到workbook中 指定图片格式 返回图片所在workbook->Picture数组中的索引地址(从1开始)
int pictureIdx = myworkbook.AddPicture(bytes, PictureType.JPEG); //第三步:在sheet中创建画部
IDrawing patriarch = mysheet.CreateDrawingPatriarch();
//第四步:设置锚点 (在起始单元格的X坐标0-1023,Y的坐标0-255,在终止单元格的X坐标0-1023,Y的坐标0-255,起始单元格行数,列数,终止单元格行数,列数)
IClientAnchor anchor = patriarch.CreateAnchor(, , , , , , , );
//第五步:创建图片
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);

16、保存Excel

FileStream file = new FileStream(@"D:\CreateExcel.xls", FileMode.Create);
myworkbook.Write(file);
file.Close();

参考:http://blog.csdn.net/xxs77ch/article/details/50174609

NPOI操作Excel(二)--创建Excel并设置样式的更多相关文章

  1. NPOI之Excel——合并单元格、设置样式、输入公式

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  2. NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  3. node.js、js读取excel、操作excel、创建excel之js-xlsx.js

    node.js篇 第一步引入包 npm install xlsx -save 第二步使用 var xl =require('xlsx'); //workbook 对象,指的是整份 Excel 文档.我 ...

  4. .net core 导出Excel(epplus 创建excel )

    [Route("getopenfrequencyexcel")] [HttpGet] public IActionResult GetOpenFrequencyExcel(int ...

  5. VSTO之旅系列(二):创建Excel解决方案

    原文:VSTO之旅系列(二):创建Excel解决方案 本专题概要 引言 创建VSTO项目 Excel对象模型 创建Excel外接程序 创建Excel文档级自定义项 小结 一.引言 也许很多朋友都没有听 ...

  6. C#-NPOI操作EXCEL

    1.获取NUGET NPOI包. 2.引用命名空间 using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using NPOI.HSSF.UserMode ...

  7. css3-6 表格如何设置样式和定位样式是什么

    css3-6 表格如何设置样式和定位样式是什么 一.总结 一句话总结:css可以解决所有属性设置的样式. 1.表格如何设置样式? css样式可以解决一切问题,没必要在表格上面加属性来设置样式. 7 t ...

  8. 用NPOI创建Excel、合并单元格、设置单元格样式、边框的方法

    本篇文章小编为大家介绍,用NPOI创建Excel.合并单元格.设置单元格样式.边框的方法.需要的朋友参考下 今天在做项目中,遇到使用代码生成具有一定样式的Excel,找了很多资料,最后终于解决了,Ex ...

  9. NPOI 创建Excel 设置宽度 样式 颜色对比表

    前两天用NPOI来操作Office软件,在使用的时候有点问题,也有收获,就做个笔记 记录下来,主要做的事数据的导出功能.一些公共的方法,做个笔记. 更多的详细内容可以到NPOI的官方教程去看  htt ...

随机推荐

  1. XLMHttpRequest对象的status属性,readyState属性以及onreadystatechange事件

    注:XLMHttpRequest简写为XHR 一.HTTP请求过程 (1)建立TCP链接 (2)web浏览器向web服务器发送请求命令 (3)web浏览器发送请求头信息 (4)web服务器应答 (5) ...

  2. 【Math for ML】矩阵分解(Matrix Decompositions) (下)

    [Math for ML]矩阵分解(Matrix Decompositions) (上) I. 奇异值分解(Singular Value Decomposition) 1. 定义 Singular V ...

  3. 【多线程补充】SimpleDateFormat非线程安全与线程中、线程组中异常的处理

    1.SimpleDateFormat非线程安全的问题 类SimpleDateFormat主要负责日期的转换与格式化,但在多线程环境中,使用此类容易造成数据转换及处理的不正确,因为SimpleDateF ...

  4. YOLOv1

    学习资料: https://blog.paperspace.com/tag/series-yolo/ https://blog.csdn.net/u014380165/article/details/ ...

  5. 题解-Atcoder_agc005D ~K Perm Counting

    Problem AtCoder-agc005D 题意概要:给出\(n,k\),求合法的排列个数,其中合法定义为任何数字所在位置与自身值差的绝对值不为\(k\)(即求排列\(\{A_i\}\),使得\( ...

  6. mysql5.6基于主从复制的mmm高可用架构详解

    MMM规划192.168.3.12 master192.168.3.13 slave1192.168.3.198 slave2 MMM部署步骤1.配置主主复制及主从同步集群2.安装主从节点所需要的支持 ...

  7. HDU 1250

    简单大数 (要压位,不然会超内存) #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  8. Django 笔记(四)模板标签 ~ 自定义过滤器

    模板标签: 标签在渲染的过程中提供任意的逻辑 语法: 由{% ... %} 和 {% end... %} 常用标签: with:类似取别名 模版继承: Django模版引擎中最强大也是最复杂的部分就是 ...

  9. python中的各种锁

    一.全局解释器锁(GIL) 1.什么是全局解释器锁 在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使 用权消失后才能使用全局解释 ...

  10. 如何用Axure快速制作APP交互原型

    对于产品经理来说,熟练使用一些常用软件是一项十分必要的技能.其中,作为一个专业的快速原型设计工具,Axure RP无疑在产品人心中拥有一个难以撼动的地位.但就要PS一样,虽然足够专业,但同样也会存在使 ...