加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用apache poi使列只读

发布时间:2020-12-14 16:20:16 所属栏目:Java 来源:网络整理
导读:我正在使用apache-poi生成excel文件.我需要将第4列设为只读,其余2列将由用户编辑. 我正在使用XSSFCellStyle来实现这一目标,但它对我不起作用. 整个代码是: MapString,XSSFCellStyle styles = new HashMapString,XSSFCellStyle();XSSFCellStyle style5 = wb.
我正在使用apache-poi生成excel文件.我需要将第4列设为只读,其余2列将由用户编辑.

我正在使用XSSFCellStyle来实现这一目标,但它对我不起作用.

整个代码是:

Map<String,XSSFCellStyle> styles = new HashMap<String,XSSFCellStyle>();

XSSFCellStyle style5 = wb.createCellStyle();
XSSFFont headerFont = wb.createFont();
headerFont.setBold(true);
style5.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
style5.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
style5.setFont(headerFont);
style5.setLocked(true); // this line does not get executed.
styles.put("header",style5);

解决方法

您必须保护整个工作表并解锁应该可编辑的单元格:
String file = "c:poitest.xlsx";
FileOutputStream outputStream = new FileOutputStream(file);
Workbook wb = new XSSFWorkbook();

CellStyle unlockedCellStyle = wb.createCellStyle();
unlockedCellStyle.setLocked(false);

Sheet sheet = wb.createSheet();
sheet.protectSheet("password");
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("TEST");
cell.setCellStyle(unlockedCellStyle);

wb.write(outputStream);
outputStream.close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读