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'的顶部?请从''。 –