首页 文章

保护工作表会导致工作簿损坏

提问于
浏览
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();

我得到一个损坏的Excel表格 . 我使用apache poi 3.8和Excel 2007 .

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

任何帮助将不胜感激

斯蒂芬

1 回答

  • 2

    我知道这是一个老帖子,但我刚刚解决了这个问题 . 您可以使用以下代码: ``
    //just initialize these XSSFWorkbook xwb; XSSFSheet xsheet;
    xsheet.protectSheet("1234"); xsheet.getCTWorksheet().getSheetProtection().setFormatColumns(false); xsheet.enableLocking(); xwb.lockStructure();

    希望这有助于未来的人! :d

相关问题