最近的项目中用到了poi方式创建excel文件,

某些单元格要进行锁定,某些单元格需要进行填写选项的预设值,

发现有两种需求

1、锁定大部分的单元格

2、只锁定某一个单元格

就以上两种情况,有不同的解决办法

需求1:锁定大部分的单元格

1.1创建Excel 及其sheet

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("锁定大部分单元格的Excel");

1.2如果要锁定单元格,必须给shee设置密码,默认excel的sheet对应的单元格全部锁定

给锁定的单元格设置密码 !!,密码为  ”edit“

    sheet.protectSheet("edit");

1.3 给不需要锁定的单元格解锁

1.3.1 创建一个不锁定的cellstyle

        public HSSFCellStyle unLockStyle(HSSFWorkbook workbook) {HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setLocked(false);return cellStyle;}

1.3.2 创建不锁定的单元格并解锁

  for (int i = 3; i < 100; i++) {row = sheet.createRow(i);// 创建普通单元格,这个单元格是最普通的锁定状态的for (int j = 0; j < width; j++) {cell = row.createCell(j);HSSFCellStyle cellStyle2 = workbook.createCellStyle();cell.setCellStyle(unLockStyle(workbook));}}

以上就创建了不锁定的单元格,除了第3行到100行的0到width列外,其他都是锁定状态

需求2:只锁定某一个单元格

2.1创建excel及其sheet

 HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("只锁定某一个单元格");

2.2 创建锁定的方法

  void setDataValidation(HSSFCell cell) {// 单元格设置数据有效性DVConstraint constraint = DVConstraint.createNumericConstraint(DVConstraint.ValidationType.INTEGER, DVConstraint.OperatorType.GREATER_OR_EQUAL, "0", null);//设置数据有效性加载在哪个单元格上。//四个参数分别是:起始行、终止行、起始列、终止列CellRangeAddressList regions = new CellRangeAddressList(cell.getRowIndex(), cell.getRowIndex(), cell.getColumnIndex(), cell.getColumnIndex());//数据有效性对象HSSFDataValidation data_validation = new HSSFDataValidation(regions, constraint);//加入sheetsheet.addValidationData(data_validation);}

2.3 创建第3行第6列的单元格

 HSSFRow row = sheet.createRow(3);HSSFCell cell = row.createCell(6);

2.4 锁定这个单元格

this.setDataValidation(cell, sheet);

2.2里面分方法可以不懂,只要调用,并将cell和sheet作为实参传入就可以了

2.5效果如下

如有错误,请各位指正

HSSFWorkbook 锁定部分单元格,或者锁定一个单元格相关推荐

  1. mysql group_concat去重_mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格...

    mysql GROUP_CONCAT 函数 将相同的键的多个单元格合并到一个单元格 MemberID MemberName FruitName -------------- ------------- ...

  2. Excel快速将多个单元格合并到一个单元格

    在工作或生活中,对于小批量的数据我们习惯用Excel来处理,经常可能会面临这样的问题--如何把多个单元格数据合并到一个单元格.实现这一效果的方式有很多种,比如CONCATENATE函数.连接符& ...

  3. excel公式 某一个单元格等于另一个单元格的值_EXCEL函数学习5——COUNTIF函数

    [标签] excel函数.统计函数 前面我们学习了COUNT函数,我们回顾一下: count函数很简单,就是统计一个或多个区域的数字个数.相对来说,countif函数多了一个if,也就是可以增加条件了 ...

  4. excel公式 某一个单元格等于另一个单元格的值_15个excel小技巧,简单易学,一看就会,收藏备用吧...

    hello,大家好,今天跟大家分享15个excel小动画,如果工作中遇到类似的问题即可快速搞定,话不多说,让我们直接开始吧 1.利用查找统计单元格颜色 首先我们按ctrl+f查找窗口,然后点击旁边的格 ...

  5. phpexcel导出大量数据合并单元格_PHPExcel处理一个单元格内多条数据拆分成多个单元格多条数据...

    日期: 2020年6月17日 分类: PHP Tags: Excel 阅读量: 1,221 一.描述需求 如图,当我们遇到一条数据中,某一项内容有多条数据,为了方便文档查阅,我们需要在那一项数据进行拆 ...

  6. 计算机分配回县考取比率,打开工作簿文件 EXCEL.XLSX : (1) 将 Sheet1 工作表的 A1 ∶ D1 单元格合并为一个单元格_题来了...

    解析 : ( 1 )[解题步骤] 步骤 1 :单击"考生文件夹"按钮,打开 EXCEL.XLSX 文件,选中 Sheet1 工作表的 A1 ∶ D1 单元格,在[开始]功能区的[对 ...

  7. Excel 多个单元格合并到一个单元格中的函数

    1.=CONCATENATE("('",A2,"','",B2,,"','",C2,"','",D2,"',' ...

  8. ios 获取最后一个cell_关于ios:向UICollectionView的第一个和最后一个单元格添加填充...

    我子类化UICollectionViewFlowLayout以获取具有分页行为的水平UICollectionView. 只要UICollectionViewCell不是最后一个单元格,它就可以很好地工 ...

  9. php把1拆分成三份,谁知道Excel电子表格怎么把一个单元格分3份(分成3个三角)! | excle表格怎么分割三份...

    请问,excel表格的单元格怎么一分为二或一分为三,是拆分,与合并无关,请高手指教 excel拆分已合并的格的步骤: 三行单元格目前处于一个单元格状态. 选还原的单元格,右键鼠标,在工具栏中选择快捷转 ...

  10. 使用EasyExcel 根据单元格数值动态合并单元格

    文章目录 前言 一.实现思路 二.实现步骤 1.拦截策略 2.EasyExcel写操作 前言 使用EasyExcel 根据单元格数值动态合并单元格 开发中遇到一个需求,需要根据Excel表格中单元格的 ...

最新文章

  1. metasploit快速入门(二)收集信息
  2. BZOJ2843: 极地旅行社
  3. python不能安装pip_python – 无法安装pip:权限被拒绝错误
  4. BundlePhobia
  5. php智能裁剪黑边,图片裁剪去除黑边
  6. php注入教程,php注入点构造代码实例详解
  7. 错误用的两个方法之间的区分
  8. linux查看u盘的分区格式化,linux U盘格式化ext3
  9. 手机桌面便签怎么绑定手机号?
  10. HTML短信测压引流源码
  11. iosbanner_ios图片的局部拉伸-------App首页banner图的iPhone X适配
  12. Frida调用静态函数和非静态函数
  13. CSDN写文章Markdown个人笔记
  14. 在SAGE系列期刊上发表论文
  15. 测试工程师之【python】按工龄开始日期和司龄开始日期计算当年法定年假
  16. 深度学习的不确定性(Uncertainty/confidence score)与校准(Calibration)
  17. 东北大学计算机难度,东北大学考研难吗
  18. 用Python自定义一个时钟类、定时任务类
  19. 什么是过拟合?|代码+详细注释
  20. php第一章:4.Apache加载php模块 且分配工作给php

热门文章

  1. Unity Singleton 单例类
  2. 华为LTC流程再造(BPR)的来龙去脉,看一篇文就够了!管理变革专家许浩明老师
  3. Pandas缺失值inf与nan处理实践
  4. Java实现复数运算
  5. Flutter入门综合练习
  6. dialog沉浸式状态栏android,Dialog全屏,去掉状态栏的方式
  7. juniper防火墙操作命令
  8. 【简单记】用友NC6.5_RCE
  9. 基于某电信运营数据的精准营销分析
  10. zlib访问方法(2022-11-16)