NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等
- 首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容:
- //建立空白工作簿
- IWorkbook workbook = new HSSFWorkbook();
- //在工作簿中:建立空白工作表
- ISheet sheet = workbook.CreateSheet();
- //在工作表中:建立行,参数为行号,从0计
- IRow row = sheet.CreateRow(0);
- //在行中:建立单元格,参数为列号,从0计
- ICell cell = row.CreateCell(0);
- //设置单元格内容
- cell.SetCellValue("实习鉴定表");
- 设置单元格样式:设置单元格样式时需要注意,务必创建一个新的样式对象进行设置,否则会将工作表所有单元格的样式一同设置,它们应该共享的是一个样式对象:
- ICellStyle style = workbook.CreateCellStyle();
- //设置单元格的样式:水平对齐居中
- style.Alignment = HorizontalAlignment.CENTER;
- //新建一个字体样式对象
- IFont font = workbook.CreateFont();
- //设置字体加粗样式
- font.Boldweight = short.MaxValue;
- //使用SetFont方法将字体样式添加到单元格样式中
- style.SetFont(font);
- //将新的样式赋给单元格
- cell.CellStyle = style;
设置单元格宽高:
- 设置单元格的高度实际是设置其所在行高,所以要在单元格所在行上设置行高,行高设置数值好像是像素点的1/20,所以*20以便达到设置效果;
- 设置单元格的宽度实际上是设置其所在列宽,所以要在单元格所在列上设置(列的设置在工作表上),宽度数值好像是字符的1/256,所以*256以便达到设置效果。
- //设置单元格的高度
- row.Height = 30 * 20;
- //设置单元格的宽度
- sheet.SetColumnWidth(0, 30 * 256);
合并单元格:合并单元格实际上是声明一个区域,该区域中的单元格将进行合并,合并后的内容与样式以该区域最左上角的单元格为准。
- //设置一个合并单元格区域,使用上下左右定义CellRangeAddress区域
- //CellRangeAddress四个参数为:起始行,结束行,起始列,结束列
- sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));
添加公式:使用Cell的CellFormula来设置公式,是一个字符串,公式前不需要加=号。
- //通过Cell的CellFormula向单元格中写入公式
- //注:直接写公式内容即可,不需要在最前加'='
- ICell cell2 = sheet.CreateRow(1).CreateCell(0);
- cell2.CellFormula = "HYPERLINK(\"测试图片.jpg\",\"测试图片.jpg\")";
将工作簿写入文件查看效果:
- //将工作簿写入文件
- using (FileStream fs = new FileStream("生成效果.xls", FileMode.Create, FileAccess.Write))
- {
- workbook.Write(fs);
- }
- 最终效果:
参考资料:
- NPOI的下载地址:http://npoi.codeplex.com/
- NPOI的使用教程(中文):http://tonyqus.sinaapp.com/
出处:https://www.cnblogs.com/xwgli/archive/2013/05/03/3057824.html
设置Excel的自动筛选功能
最新导出数据需要使用Excel的筛选功能,网上多方查找,终于在一个繁体的网站上找到了方法,呃,这个网站还是Java的,讲的是POI,不过.NET的NPOI也就一样用了。
- CellRangeAddress c = CellRangeAddress.ValueOf("A1");
- sheet.SetAutoFilter(c);
通过设置要进行自动筛选的单个单元格或者多个单元格,然后在sheet上进行设置自动筛选。
(参考:http://www.javaworld.com.tw/jute/post/view?bid=11&id=301435)
顺便一起说一个
单元格数字格式的问题
NPOI向Excel文件中插入数值时,可能会出现数字当作文本的情况(即左上角有个绿色三角),这样单元格的值就无法参与运算。这是因为在SetCellValue设置单元格值的时候使用了字符串进行赋值,默认被转换成了字符型。如果需要纯数字型的,请向SetCellValue中设置数字型变量。
以上两个问题的示例代码如下:
- //建立空白工作薄
- IWorkbook workbook = new HSSFWorkbook();
- //在工作薄中建立工作表
- ISheet sheet = workbook.CreateSheet();
- //填充筛选的内容
- sheet.CreateRow(0).CreateCell(0).SetCellValue("省份");
- sheet.CreateRow(1).CreateCell(0).SetCellValue("河北省");
- sheet.CreateRow(2).CreateCell(0).SetCellValue("湖南省");
- //验证数字格式问题
- sheet.GetRow(1).CreateCell(2).SetCellValue("123");
- sheet.GetRow(2).CreateCell(2).SetCellValue(123);
- //设置Excel的自动筛选
- CellRangeAddress c = CellRangeAddress.ValueOf("A1");
- sheet.SetAutoFilter(c);
- //写文件
- using (FileStream fs = new FileStream("haha.xls", FileMode.Create, FileAccess.Write))
- {
- workbook.Write(fs);
- }
最终的效果显示:
出处:https://www.cnblogs.com/xwgli/p/3178153.html
NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等的更多相关文章
- NPOI之Excel——合并单元格、设置样式、输入公式
首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...
- npoi导出excel合并单元格
需要引用NPOI.dll程序集和Ionic.Zip.dll程序集 string[] headerRowName = { "序号", "地市", "镇街 ...
- NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel
NPOI.dll 用法.单元格,样式,字体,颜色,行高,宽度.读写excel 转载:http://yuncode.net/code/c_531e679b3896495 view source prin ...
- asp.net C#取Excel 合并单元格内容
asp教程.net c#取excel 合并单元格内容读取excel数据,填充dataset// 连接字符串 string xlspath = server.mappath("~/www.11 ...
- NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)
NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 ...
- 创建excel,合并单元格,设置单元格样式
package com.huawei.excel; import java.io.File;import java.io.FileOutputStream;import java.util.Date; ...
- 转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel
我用的版本是1.25的.每个版本用法有一点不同 using System; using System.Collections.Generic; using System.ComponentModel; ...
- java poi导出Excel合并单元格并设置边框
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...
- C# NPOI Excel 合并单元格和取消单元格
1.合并单元操作 //合并单元格 /** 第一个参数:从第几行开始合并 第二个参数:到第几行结束合并 第三个参数:从第几列开始合并 第四个参数:到第几列结束合并 **/ CellRangeAddres ...
随机推荐
- angular 离开页面相关操作
$scope.$on("$destroy", function() { $interval.cancel(autoRefresh);})
- angular2组件通讯的几种方式
最近刚刚接触angular2,对ng2也是一知半解,如有说得不对的地方欢迎指出,欢迎加q共同探讨学习991085978: 1.通过输入型绑定把数据从父组件传到子组件 HeroChildComponen ...
- ibatis集成封装之路(to mysql)
hello <tx:annotation-driven transaction-manager=" "/> 插入记录ID的坑 https://renjieguixion ...
- 设置环境下文本格式为UTF-8
1.在页面创建一个template.txt文本格式,默认是ANSI,将其格式改为UTF-8 2.将template.txt丢到C:\Windows\ShellNew文件夹里面 3.打开命令行工具win ...
- robotframework·WEB端基础
date:2018526 day10 一.导入库 导入的库分两种,一种是导入常用库,如String.Collections等(Library String.Collections,再运用库中的关键字) ...
- Java使用HttpClient上传文件
Java可以使用HttpClient发送Http请求.上传文件等,非常的方便 Maven <dependency> <groupId>org.apache.httpcompon ...
- Enhancement in SAP abap.
Recently I have been taught through how to do enhancement for those standard programs. Th reason for ...
- JSON的学习,希望可以指导
1.JSON的介绍 是一种轻量级的数据交换格式.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率. 2.格式 JSON ...
- 基于NEO的私链(Private Blockchain)
1.准备工作 1.NEO-GUI 2.NEO-CLI 3..NET Core Runtime (不能是2.x版本,官方建议是1.12,实际上我用1.14也是没有问题的) 4.四台windows操作系统 ...
- python自定义异常抛出接受多个数值
在使用Python的时候,有时候想自己自定义异常错误,同时抛出多个参数,比如对数据库查找一条数据,如果没有找到,返回 {"errCode":"-1", &quo ...