NPOI导出数据,设置格式,锁定单元格
代码包括:
1:导出多个sheet 2:设置单元格格式 3:合并单元格 4:下拉框选项 5:输入数字限制 6:锁定单元格
static void Main(string[] args){//hssf表示2003 xssf表示2007 两者之间有的功能是一样的,比如设置列宽,锁定单元格//有的功能是不一样的,具体情况具体对待//实例化一个操作excel工作薄的对象IWorkbook workbook = new HSSFWorkbook();//创建表ISheet sheet1 = workbook.CreateSheet("sheet1");//创建行(一行一行的创建,参数代表第几行,不能相同,会覆盖)IRow row1 = sheet1.CreateRow(0);//创建单元格(一个一个的创建,参数代表第几个,不能相同,会覆盖)ICell cell1 = row1.CreateCell(0);//设置值cell1.SetCellValue("大家好");//设置格式ICell cell2 = row1.CreateCell(1);cell1.SetCellValue("hahah");SetCellStyle((HSSFWorkbook)workbook, cell1);//合并单元格MergeCell(sheet1, 0, 0, 1, 4);sheet1.SetColumnWidth(0, 20 * 256);sheet1.SetColumnWidth(1, 25 * 256);//创建另一个sheetISheet sheet2 = workbook.CreateSheet("sheet2");SetCellDropdownlist(sheet2);//下拉列表SetCellInputNumber(sheet2);//只能输入数字//锁定sheetISheet sheet3 = workbook.CreateSheet("sheet3");//设置密码,锁定表(只要设定就会锁定整个sheet)sheet3.ProtectSheet("123456");IRow row3 = sheet3.CreateRow(0);ICell c1 = row3.CreateCell(0);ICell c2 = row3.CreateCell(1);//不锁定HSSFCellStyle unlocked = (HSSFCellStyle)workbook.CreateCellStyle();unlocked.IsLocked = false;//锁定HSSFCellStyle locked = (HSSFCellStyle)workbook.CreateCellStyle();locked.IsLocked = true;c1.SetCellValue("未锁定");c1.CellStyle = unlocked;//其实这个设置不设置都一样的,只要加密就是锁定整个sheetc2.SetCellValue("锁定");c2.CellStyle = locked;using (Stream stream = File.OpenWrite(@"D:\test2.xls")){//进行保存workbook.Write(stream);}Console.WriteLine("成功");Console.ReadKey();}/// <summary>/// 设置单元格为下拉框并限制输入值/// </summary>/// <param name="sheet"></param>private static void SetCellDropdownlist(ISheet sheet){//设置生成下拉框的行和列(开始行,结束行,开始列,结束列)var cellRegions = new CellRangeAddressList(0, 20, 0, 0);//设置 下拉框内容DVConstraint constraint = DVConstraint.CreateExplicitListConstraint(new string[] { "itemA", "itemB", "itemC" });//绑定下拉框和作用区域,并设置错误提示信息HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);dataValidate.CreateErrorBox("输入不合法", "请输入下拉列表中的值。");dataValidate.ShowPromptBox = true;sheet.AddValidationData(dataValidate);}/// <summary>/// 设置单元格只能输入数字/// </summary>/// <param name="sheet"></param>private static void SetCellInputNumber(ISheet sheet){//设置生成下拉框的行和列var cellRegions = new CellRangeAddressList(0, 10, 1, 1);//第二个参数int comparisonOperator 参考源码获取//https://github.com/tonyqus/npoi//NPOITest项目DVConstraint constraint = DVConstraint.CreateNumericConstraint(ValidationType.INTEGER, OperatorType.BETWEEN, "0", "10");HSSFDataValidation dataValidate = new HSSFDataValidation(cellRegions, constraint);dataValidate.CreateErrorBox("输入不合法", "请输入1~10的数字。");//dataValidate.PromptBoxTitle = "ErrorInput";sheet.AddValidationData(dataValidate);}/// <summary>/// 合并单元格/// </summary>/// <param name="sheet"></param>/// <param name="firstRow"></param>/// <param name="lastRow"></param>/// <param name="firstCell"></param>/// <param name="lastCell"></param>private static void MergeCell(ISheet sheet, int firstRow, int lastRow, int firstCell, int lastCell){sheet.AddMergedRegion(new CellRangeAddress(firstRow, lastRow, firstCell, lastCell));//2.0使用 2.0以下为Region}/// <summary>/// 设置单元格样式/// </summary>/// <param name="workbook"></param>/// <param name="cell"></param>private static void SetCellStyle(HSSFWorkbook workbook, ICell cell){HSSFCellStyle fCellStyle = (HSSFCellStyle)workbook.CreateCellStyle();HSSFFont ffont = (HSSFFont)workbook.CreateFont();ffont.FontHeight = 20 * 20;ffont.FontName = "宋体";ffont.Color = HSSFColor.RED.index;//2007中直接设置就好//ffont.Color = 2;fCellStyle.SetFont(ffont);fCellStyle.VerticalAlignment = NPOI.SS.UserModel.VerticalAlignment.CENTER;//垂直对齐fCellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;//水平对齐cell.CellStyle = fCellStyle;}
参考
http://www.docin.com/p-1151996737.html?qq-pf-to=pcqq.c2c
http://www.cnblogs.com/gossip/p/4307486.html
转载于:https://www.cnblogs.com/zxking/p/6250421.html
NPOI导出数据,设置格式,锁定单元格相关推荐
- easyExcel导入导出(列锁定单元格、表头合并、导出类型限制、锁定单元格增加底色、设置密码、隐藏列等)
easyexcel官网文档:https://www.yuque.com/easyexcel/doc/easyexcel easyexcel {maven 版本} GitHub网址:https://gi ...
- EasyExcel导出数据多行合并单元格
文章目录 前言 一.话不多说上代码 2.导出使用 3.导出效果如下 总结 前言 记录使用EasyExcel导出Excel合并多行数据 一.话不多说上代码 代码如下:这是比较初始版本的.没做优化,如有大 ...
- excel锁定单元格不能修改_【软件应用】工程中经常运用的Excel技巧(附教程下载)...
点击上面"蓝字"关注我们! 路桥隧施工测量实战技能培训 授课时间:11月27日-12月17日(第一期) 12月23日-1 ...
- html表格自动变色,如何设置实现Excel单元格自动变色?动图演示更详细
同事发来了一份Excel表格文件,让你将单元格中的特殊数据进行颜色标注,面对一长串的数据,如果没有快捷技巧,你是否感觉力不从心?今天小编就来支招,给大家介绍一个方法,可以让单元格自动"变色& ...
- POI导出支持合并表头及单元格锁定的Excel
1.开发前提 目前项目上有这样的需求,支持Excel导出后再线下调至后导入,并且有关键字及其他部分字段不支持修改,所以需要写保护,按正常的理解来讲锁定特定的列即可,但是需求中需要在Excel中添加行数 ...
- 填报表导出excel非可写单元格锁定问题
问题描述: 填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对 ...
- 如何才能通过设置将excel单元格内的14位数字转换为日期格式
如何才能通过设置将excel单元格内的14位数字转换为日期格式 (如20200226230300转换为2010-06-02-10-46-36) ? 自定义格式 0000-00-00-00-00-00 ...
- excel锁定单元格不能修改_Excel如何保护特定的数据不被更改?
EXCEL如何保护一些数据,防止被更改呢?下图中A列即为不能更改的区域. 第一步:先选中整个工作表 第二步:右键-设置单元格格式-保护-不勾选锁定 第三步:选中需要保护的区域 第四步:右键-设置单元格 ...
- excel锁定单元格不能修改_EXCEL/WPS如何保护特定的数据不被更改?
因为界面及使用方法类似,本文使用WPS进行说明. EXCEL如何保护一些数据,防止被更改呢?下图中A列即为不能更改的区域. 第一步:先选中整个工作表 第二步:右键-设置单元格格式-保护-不勾选锁定 第 ...
最新文章
- 各大网站屏蔽搜索引擎抓取分析
- java 返回double数组_java-如何使用Collectors.averagingDouble计算双精度数组的均值?
- “不传递消息、不使用邻接矩阵、在边集上训练”: 从对比链接中蒸馏自知识:非消息传递的图节点分类...
- tcpdump 抓取icmp数据包
- c:if判断参数是否为空
- linux搜索文件内容含有星号,文本内容查找grep、文件查找find、正则匹配
- flowable实现流程回退功能
- JAVA知识基础(一):数据类型
- 【spring】【转】Spring 框架的设计理念与设计模式分析
- Drawable之color示例
- 《网络攻防第六周作业》
- H3C无线 AC旁挂式部署无线开局(WEB版)
- 模块化机房建设指导书_模块化机房建设方案
- window10运行不了1stopt_软件与win10不兼容怎么办?完美解决Win10与软件不兼容的问题...
- IDEA怎么查看现在的项目使用的JDK版本? 2016年4月19日22:51
- kali虚拟机VMBox安装
- easyui ValidateBox validType验证规则
- 一着不慎被蛇咬,最近半月终出坑
- plsr matlab,matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)
- 基于MATLAB BP神经网络的水果识别