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); //创建另一个sheet
ISheet sheet2 = workbook.CreateSheet("sheet2");
SetCellDropdownlist(sheet2);//下拉列表
SetCellInputNumber(sheet2);//只能输入数字 //锁定sheet
ISheet 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; //其实这个设置不设置都一样的,只要加密就是锁定整个sheet
c2.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
NPOI导出数据,设置格式,锁定单元格的更多相关文章
- NPOI导出Excel文件,对单元格的一些设置
HSSFWorkbook book = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); ISheet sheet = book.Cr ...
- 填报表导出excel非可写单元格锁定问题
问题描述: 填报表单元格分为可写和不可写两种状态,当填报表在web上展现的时候可写单元格可以进行数据填报和修改,非可写单元格不可操作. 报表导出为excel时,润乾导出excel包默认情况下不对 ...
- Java poi导出设置 Excel某些单元格不可编辑
小白的总结,大神勿喷:需要转载请说明出处,如果有什么问题,欢迎留言 一.需求: 1.某一列 .某一行或某些单元格不可编辑,其他列可以编辑 二.期间遇到的问题 1.无法设置成不可编辑 2.设置为不可编辑 ...
- java使用freemarker模板导出word(带有合并单元格)文档
来自:https://blog.csdn.net/qq_33195578/article/details/73790283 前言:最近要做一个导出word功能,其实网上有很多的例子,但是我需要的是合并 ...
- POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取
第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...
- Easyui datagrid 设置内容超过单元格宽度时自动换行显示
datagrid 设置内容超过单元格宽度时自动换行显示 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 问题描述 单元格内容超过单元格宽度不会自动化换行.如下 ...
- NPOI导出数据到Excel
NPOI导出数据到Excel 前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微 ...
- [Xcode 实际操作]五、使用表格-(5)设置UITableView的单元格背景颜色
目录:[Swift]Xcode实际操作 本文将演示单元格背景颜色的设置 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先添加两个协 ...
- (转载)WPF:DataGrid设置行、单元格的前景色
WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...
随机推荐
- laravel安装
简单概括:Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以 ...
- PHP 原型模式
原型模式:原型模式是先创建好一个原型对象,然后通过拷贝原型对象来创建新的对象.适用于大对象的创建,因为创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可.也可以用作动态 ...
- spring+mybatis多数据源动态切换
spring mvc+mybatis+多数据源切换 选取oracle,mysql作为例子切换数据源.oracle为默认数据源,在测试的action中,进行mysql和oracle的动态切换. web. ...
- 离开Autodesk,开启新篇章
我已经离开了Autodesk,开启新篇章.在过去7年多时间中,我先后支持Autodesk 基础设施相关产品的开发,包括MapGuide/AIMS,Map3D,Civil 3D,Infraworks等, ...
- 贝塞尔曲线(UIBezierPath)属性、方法汇总
UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...
- iOS中空字符串报错
*参考: http://www.ithao123.cn/content-8030945.html *参考: http://www.cnblogs.com/ziyi--caolu/p/4825633.h ...
- MySQL Performance-Schema(二) 理论篇
MySQL Performance-Schema中总共包含52个表,主要分为几类:Setup表,Instance表,Wait Event表,Stage Event表Statement Event表,C ...
- xml类型使用注意事项
xml 的数据类型在平常的开发也是很常用的,燃鹅.也是有一些地方需要留意.今天我就分享几个测试的例子. 使用 xquery.exist (有但不仅仅限于)的注意事项.通常使用来判断节点是否存在,值是否 ...
- Oracle学习笔记二 初识Oracle(二)
Windows 中的 Oracle 服务 Oracle 9i的每个实例在Windows中都作为一项服务启动 服务是在 Windows 注册表中注册的可执行进程,由 Windows 操作系统管理 “服务 ...
- [笔记]ubuntu安装flashplayer
为firefox安装: 下载tar.gz压缩包:http://get.adobe.com/cn/flashplayer/ 解压:tar -xvxf install_flash_player_11_li ...