一、需求分析
公司业务部门需要,根据一些数据,加上表头,导出需要的excel表格。效果如下:
二、代码实现
<!-- POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
对于excel样式,笔者的做法是,读取设置好的xlsx模板样式,设置导出表格的样式。
public static void setPrintSetupInfoMargin(Sheet templeteSheet, Sheet outputSheet, String type) {
PrintSetup psTemplete = templeteSheet.getPrintSetup();
PrintSetup psOutput = outputSheet.getPrintSetup();
//页眉边距设置
psOutput.setHeaderMargin(psTemplete.getHeaderMargin());
psOutput.setFooterMargin(psTemplete.getFooterMargin());
//设置宽、高页数以适合纸张
psOutput.setFitWidth(psTemplete.getFitWidth());
psOutput.setFitHeight(psTemplete.getFitHeight());
//设置纸张尺寸
psOutput.setPaperSize(psTemplete.getPaperSize());
//设置页码开始
psOutput.setPageStart(psTemplete.getPageStart());
//设置是否横向打印
psOutput.setLandscape(psTemplete.getLandscape());
//设置是按顺序从左到右还是自上而下
psOutput.setLeftToRight(psTemplete.getLeftToRight());
//设置是否处于草稿模式
psOutput.setDraft(psTemplete.getDraft());
//设置比例
psOutput.setScale(psTemplete.getScale());
//页边距设置
psOutput.setHeaderMargin(psTemplete.getHeaderMargin());
psOutput.setFooterMargin(psTemplete.getFooterMargin());
if (".xls".equals(type)) {
psOutput.setScale((short) (psTemplete.getScale()+5));
outputSheet.setMargin(HSSFSheet.TopMargin, templeteSheet.getMargin(SXSSFSheet.TopMargin));
outputSheet.setMargin(HSSFSheet.BottomMargin, templeteSheet.getMargin(SXSSFSheet.BottomMargin));
outputSheet.setMargin(HSSFSheet.RightMargin, templeteSheet.getMargin(SXSSFSheet.RightMargin));
outputSheet.setMargin(HSSFSheet.LeftMargin, templeteSheet.getMargin(SXSSFSheet.LeftMargin));
}else {
outputSheet.setMargin(SXSSFSheet.TopMargin, templeteSheet.getMargin(SXSSFSheet.TopMargin));
outputSheet.setMargin(SXSSFSheet.BottomMargin, templeteSheet.getMargin(SXSSFSheet.BottomMargin));
outputSheet.setMargin(SXSSFSheet.RightMargin, templeteSheet.getMargin(SXSSFSheet.RightMargin));
outputSheet.setMargin(SXSSFSheet.LeftMargin, templeteSheet.getMargin(SXSSFSheet.LeftMargin));
}
//页面打印选项设置(根据模板的选择来设置)
outputSheet.setFitToPage(templeteSheet.getFitToPage());
//页脚设置
Footer psTempletefooter = templeteSheet.getFooter();
Footer psOutputfooter = outputSheet.getFooter();
psOutputfooter.setCenter(psTempletefooter.getCenter());
//页眉设置省略。。。
//设置标题(实现打印时每一页都有同个头部标题)
outputSheet.setRepeatingRows(templeteSheet.getRepeatingRows());
outputSheet.setRepeatingColumns(templeteSheet.getRepeatingColumns());
}
根据模板设置长宽:
//设置行宽度、行高度
for (int i = 0; i < items.get(0).length + 3; i++) {
sheet.setColumnWidth(i, tempSheet.getColumnWidth(i));
}
//设置合并区域
sheet.addMergedRegion(new CellRangeAddress(startLine + 2, startLine + 3, itemLists.length - 1, itemLists.length - 1));
效果图片:
//设置分页符
sheet.setRowBreak(currNowCow - 1);
原文地址:https://blog.csdn.net/m0_46013789/article/details/134583435
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_45938.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。