0
我想在使用apache poi的excel文件中設置頁面佈局。我正在使用以下代碼:Apache poi爲XSSFSheet設置頁面佈局
FileInputStream fs = new FileInputStream("Test.xlsx");
xssfWorkbook = new XSSFWorkbook(fs);
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
CTSheetView view = sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0);
view.setView(STSheetViewType.PAGE_LAYOUT);
它工作正常,如果我創建一個新工作表並調用該函數。但是,如果我打開一個現有的Excel文件並嘗試在頁面佈局中設置所有工作表,它會得到異常。因爲sheet.getCTWorksheet()。getSheetViews()在這種情況下返回null。如何實現現有的Excel文件的頁面佈局?我將不勝感激任何幫助。提前致謝。
這很奇怪。每張表應該有工作表視圖設置。但是你可以檢查你是否得到'null',然後使用適當的'addNew ...'方法。 [CTWorksheet.addNewSheetViews](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/ooxml-schemas/1.1/org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorksheet。 java#CTWorksheet.addNewSheetViews%28%29)和[CTSheetViews.addNewSheetView](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.poi/ooxml-schemas/1.1/org/openxmlformats /schemas/spreadsheetml/x2006/main/CTSheetViews.java#CTSheetViews.addNewSheetView%28%29)。 –
@AxelRichter根據你的建議,現在我添加了'if(sheet.getCTWorksheet()。getSheetViews()== null){sheet.getCTWorksheet()。addNewSheetViews()。addNewSheetView();在訪問'CTSheetView'之前。現在,如果我通過調用'xssfWorkbook.write(outputStream)'來保存新的excel文件,則文件已損壞。有什麼建議麼? – Masum
如上所述,奇怪的是表單沒有表單視圖。 Test.xlsx來自哪裏?你解壓縮了它,看看'/ xl/worksheets/sheet1.xml'嗎?如何在那裏看到'XML'的頂部?請從''。 –