前言

项目中导出Excel是很常见的操作,有时候会要求对导出出来的Excel做一些特定的设置,比如冻结某些行、某些列等等,此文将简单介绍一些通过代码设置Excel的格式。

冻结行和列

代码:

XSSFWorkbook wb = null;
XSSFSheet sheet = null;
wb = new XSSFWorkbook();//创建一个工作薄
sheet = (XSSFSheet)wb.CreateSheet("Sheet1");//在工作薄中创建一个工作表
sheet.CreateFreezePane(3, 1, 3, 1);//冻结Excel行和列

冻结方法中的参数详解:void CreateFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow);

colSplit:表示要冻结的列数;

rowSplit:表示要冻结的行数;

leftmostColumn:表示右边区域可见的首列序号,从1开始计算;

topRow:表示下边区域可见的首行序号,也是从1开始计算;

锁定单元格不可编辑

需求:某一列 、某一行或某些单元格不可编辑,其他列可以编辑。

原理:

使用保护工作表的方式:

  Excel中默认所有列都为选中状态,而保护工作表时保护的是锁定状态的列。因此,要设置某列不可编辑的实现方式如下:

  1)、将要设置为不可编辑的列的锁定状态改为未锁定。

  2)、保护工作表。

代码片段:

var cellStyle = wb.CreateCellStyle();
cellStyle.IsLocked = true;

XSSFCell ic;
ic = (XSSFCell)rw.CreateCell(1);
ic.CellStyle = cellStyle; //对需要锁定的单元格引用锁定的样式
ic.SetCellType(CellType.String);
ic.SetCellValue("test");

//sheet添加保护,必需设置,否则光锁定还是可以编辑的
sheet.ProtectSheet("123456");

设置单元格可以下拉选择

需求:某些单元格要求选择给定的某几项值,无需手动填写。

XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper(sheet);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)dvHelper.CreateExplicitListConstraint(new string[] { "未开始", "进行中", "已完成"});
CellRangeAddressList addressList = new CellRangeAddressList(1, 65535, 2, 2);
XSSFDataValidation validation = null;
validation = (XSSFDataValidation)dvHelper.CreateValidation(dvConstraint, addressList);
sheet.AddValidationData(validation);

效果预览

excel.gif

作者: 一蓑烟雨

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类: ASP.NET MVC
posted 阅读(58 ) 评论(0 )

评论内容: