1

我想用 apache poi 复制一个 Excel 工作簿。副本必须受到保护,但用户应该能够调整列的大小。我准备了一个模板,并在模板的第一张纸上选择了“列格式”。当我使用以下代码段时

      InputStream is = new FileInputStream(
                new File(DIR, "template.xlsx"));
            XSSFWorkbook wb = (XSSFWorkbook) WorkbookFactory.create(is);
            XSSFSheet s = wb.getSheetAt(0);
            s.protectSheet("");
            FileOutputStream os = new FileOutputStream(new File(DIR, "test.xlsx"));
            wb.write(os);
            os.close();

我得到一个损坏的 Excelsheet。我使用 apache poi 3.8 和 Excel 2007。

是否有保护工作表但允许调整列大小的解决方法?

任何帮助将不胜感激

斯蒂芬

4

1 回答 1

2

我知道这是一个旧帖子,但我刚刚解决了这个问题。您可以使用以下代码:

//just initialize these XSSFWorkbook xwb; XSSFSheet xsheet;

xsheet.protectSheet("1234"); xsheet.getCTWorksheet().getSheetProtection().setFormatColumns(false); xsheet.enableLocking(); xwb.lockStructure();

希望这对将来的人有所帮助!:D

于 2013-02-11T19:04:28.463 回答