2017-03-15 435 views
0

我有用于Excel文件操作的Apache POI API。 Excel文件由Jasper Report生成。从Jasper报告生成Excel是好的。我想要的是Jasper Report不支持的其他一些东西。就像添加打印页面设置 - 页眉和页脚的东西。我忽略了每个Excel页面上的边界。但是当我添加页眉和页脚时,它们会打印一些边距。然后观察MS Excel上页面设置页面上有一个复选框。Apache POI Excel:页面设置与页边距对齐

​​

这里Align with page margins复选框控件上页眉和页脚余量。如果此复选框被选中,则它将具有与Excel页面相同的页边距。

问题:如何从Apache POI控制此复选框字段?

回答

1

此功能尚未出现。但是,在XSSF文件格式中,您可以使用CT类获取它。我会从这里开始:

Sheet sh = wb.createSheet(); 
HeaderFooter header = sh.getHeader(); 
XSSFHeaderFooter xhd = (XSSFHeaderFooter) header; 
CTHeaderFooter ctHd = xhd.getHeaderFooter(); 
ctHd.setAlignWithMargins(true); 

这只适用于XLSX文件,我不知道如何使用XLS文件。注意我从通用工作簿,工作表和标题开始。但是,然后将其转换为XSSF标题以获取底层的CT类。您可以使用XSSF类编写整个应用程序,并且您不必XSSFHeaderFooter xhd = (XSSFHeaderFooter) header;

+0

请建议一个功能增强/为此打开一个漂亮的XSSF页眉/页脚包装的拉请求! :) – Gagravarr

+0

我觉得有什么问题。 'Sheet.getHeader()'不返回HeaderFooter。这里是javadoc链接。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html#getHeader() –

+0

它返回'Header',它是'HeaderFooter'。我需要'HeaderFooter'来将此位转换为'XSSFHeaderFooter'。你尝试过它失败了吗?发生了什么。 – jmarkmurphy