当前位置:   article > 正文

【112期】POI 导出 excel:设置字体、颜色、行高与列宽自适应、锁住与合并单元格_poi 导出excel设置行高列宽

poi 导出excel设置行高列宽

导出excel , 自然就有导入excel 了, 比如导出一些数据出来, 修改一些再导入进去, 但是这时, 一些基本信息我们不希望用户随意去修改, 这里就用到了excel的锁

sheet.protectSheet(密码)

代码:

// 创建Excel文件

HSSFWorkbook workbook = new HSSFWorkbook();

HSSFSheet sheet = workbook.createSheet(DateUtils.getDate(“yyyyMMdd”));

//锁定sheet

sheet.protectSheet(“zgd”);

这样的话, 这个sheet都会被锁定

但是我们又希望开放一些单元格可以修改 , 这个时候就要细粒度的进行设置了

创建一个cellStyle:

CellStyle unlockCell = workbook.createCellStyle();

unlockCell.setLocked(false);

然后在我们不需要锁定的单元格上, 给它这个 cellStyle

// 设置dataRow这一行的第i个单元格不锁定

dataRow.getCell(i).setCellStyle(unlockCell);

3. 设置列宽


在锁定了sheet之后, 会发现一个问题, 就是列宽都不能改变了

这个时候没办法, 只能自己设置列宽了, 现在网上找到的设置列宽的方法有以下几个:

1.自适应列宽度:

sheet.autoSizeColumn(1);

sheet.autoSizeColumn(1, true);

这两种方式都是自适应列宽度,但是注意这个方法在后边的版本才提供,poi的版本不要太老。

注意:第一个方法在合并单元格的的单元格并不好使,必须用第二个方法。

经过测试,这种自适应的api在遇到行数多一点的数据的时候,就会耗费大量的时间,1000行花了2分钟!!!所以尽量不要用

sheet.trackAllColumnsForAutoSizing();

sheet.autoSizeColumn(i);

而且这两个方法对英文数字还好, 对中文支持的并不好:

2.用数组将大概的宽度设置好,手动set宽度

int[] width = {xxx,xxx};

for循环

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/812243
推荐阅读
相关标签
  

闽ICP备14008679号