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

时间:2012-05-03 15:55:13

标签: apache-poi

我想用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 个答案:

答案 0 :(得分:2)

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

//just initialize these XSSFWorkbook xwb; XSSFSheet xsheet;

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

希望这有助于将来的某个人! :d