2012-05-03 30 views
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(); 

エクセルシートが壊れます。私はapache poi 3.8とExcel 2007を使用しています。

シートを保護するには回避策がありますが、列のサイズを変更できますか?

すべてのヘルプは大幅に

ステファン

+0

ここに同じです。私は現在、これを扱っています。 – Jairo

答えて

2

をいただければ幸い私は、これは古い記事ですけど、私はこの問題を解決しました。次のコードを使用することができます:

//just initialize these XSSFWorkbook xwb; XSSFSheet xsheet;

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

これは将来誰かに役立つことを願っています! :D

関連する問題