Apache POI锁定单元格但允许列调整大小

时间:2018-02-14 12:14:45

标签: java excel apache-poi password-protection xssf

我通过Apache POI XSSF创建一个Excel文件,然后用密码锁定工作表,这样用户就无法更改前两行和前五列的值(我锁定工作表并允许编辑其他单元格)。一切正常,唯一的问题是用户无法调整列的大小,因此他既不能更改也不能调整列的大小以读取所有单元格的值。 即使工作表受到保护,是否可以允许列调整大小? 这是我的配置

workbook = new XSSFWorkbook();
sheet = workbook.createSheet("Sheet1");
sheet.protectSheet("passwordExcel"); 
unlockedNumericStyle = workbook.createCellStyle(); 
unlockedNumericStyle.setLocked(false);
// Format cell for date
dateStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd/mm/yyyy"));
sheet.autoSizeColumn(1);

我读到lockFormatCell(),但我不明白它是否可以帮助我。感谢

1 个答案:

答案 0 :(得分:2)

为了能够在工作表受到保护时调整列大小,您需要将XSSFSheet.lockFormatColumns设置为b = b.rename(columns={'FAM_FRUIT': 'famousfruit', 'FAM_ANI': 'famousanimal', 'cid': 'countryid'}) a.merge(b, how='outer') # countryid famousanimal famousfruit waterlvl # 0 22 monkey banana 23.0 # 1 36 elephant apple 43.0 # 2 21 monkey mango 41.0 # 3 64 horse orange 87.0 # 4 25 giraffe grapes NaN # 5 27 dog pineapple NaN # 6 98 cat avacado NaN # 7 67 horse orange NaN

完整示例:

false