我想用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。
是否有解决方法来保护工作表但允许调整列的大小?
非常感谢任何帮助
斯蒂芬
答案 0 :(得分:2)
我知道这是一个老帖子,但我刚刚解决了这个问题。您可以使用以下代码:
//just initialize these
XSSFWorkbook xwb;
XSSFSheet xsheet;
xsheet.protectSheet("1234");
xsheet.getCTWorksheet().getSheetProtection().setFormatColumns(false);
xsheet.enableLocking();
xwb.lockStructure();
希望这有助于将来的某个人! :d