JAVA操作Excel表格部分不可编辑部分可编辑

本文详细介绍了如何在Excel中使用Java代码实现特定单元格的锁定功能,确保只有指定的单元格不可编辑,同时保持其他单元格的可编辑状态。通过设置单元格样式,结合工作表保护,实现了对单元格的精确控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、需求:

1、某一列 、某一行或某些单元格不可编辑,其他列可以编辑

二、期间遇到的问题

1、无法设置成不可编辑

2、设置为不可编辑,导出后发现所有单元格均不可编辑;

原因:createCell();创建单元格后,单元格默认是锁定状态;protectSheet(“密码”);保护工作表是保护所有锁定的单元格;
解决:创建不需要保护的列设置为 unlockStyle.setLocked(false);//设置未锁定

三、解决问题

   不多BB,直接上代码

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet(“sheet名称”);

    HSSFCellStyle lockstyle = wb.createCellStyle();
    lockstyle.setLocked(true);//设置锁定
    lockstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    lockstyle.setFillForegroundColor(IndexedColors.RED.getIndex());//设置上锁的单元格背景色
    
    HSSFCellStyle unlockStyle=wb.createCellStyle();
    unlockStyle.setLocked(false);//设置未锁定
    
    
    for(int i=0;i<10;i++){
         HSSFRow row = sheet.createRow(i);
         for (int j = 0; j < 10; j++) {
             HSSFCell cell = row.createCell(j);
             cell.setCellStyle(unlockStyle);//默认是锁定状态;将所有单元格设置为:未锁定;然后再对需要上锁的单元格单独锁定
             if(j==1){//这里可以根据需要进行判断;我这就将第2列上锁了
                 cell.setCellStyle(lockstyle);//将需要上锁的单元格进行锁定
                 cell.setCellValue("上锁了");
             }else{
                 cell.setCellValue("没上锁了");
             }
        }
    }
    //sheet添加保护,这个一定要否则光锁定还是可以编辑的
    sheet.protectSheet("123456");
    FileOutputStream os = new FileOutputStream("D:\\workbook.xls");
    wb.write(os);
    os.close();

四:结果

技术分享图片

技术分享图片
原文:http://www.bubuko.com/infodetail-2896152.html

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值