java POI excel导出自定义分页问题
以A4纸为例:
excel默认A4纸大小 =210mm×297mm,换算成excel默认单位 A4=610×850
1.定义列宽 width
2.获取当前列的数据长度 length = str.getBytes().length;
/*默认行高*/
short height = 15;
/*页行高*/
double rowheight = 0;
/*定义一个list*/
List<Double> dous = new ArrayList<Double>();/*将每一列的数据计算出行高*/
dous.add(Math.ceil((float)(length )/(sheet.getColumnWidth(cellNum)/256))*height)/*预测行高*/
double virtualTotalHeight = rowHeight + Collections.max(dous);/*预测行高:如果virtualTotalHeight大于A4高度则下一页开启,否则继续当前页*/
if(isPage(virtualTotalHeight)){HSSFRow row = sheet.createRow(rowNum);/*将dous中最大的值设定为行高*/row.setHeightInPoints(Collections.max(dous).intValue());/*统计总行高*/ rowHeight = rowHeight + Collections.max(dous);/*分页符*/sheet.setRowBreak(rowNum);
}else{/*下一页*/rowHeight = 0;HSSFRow row = sheet.createRow(rowNum);/*将dous中最大的值设定为行高*/row.setHeightInPoints(Collections.max(dous).intValue());/*统计总行高*/ rowHeight = rowHeight + Collections.max(dous);
}
/*** 判断添加一行是否大于A4纸高度* @param height* @return*/
public static boolean isPage(double height){boolean flag = false;/*A4纵向纸高度*/double A4_lengthways_pageSize = 828;//纵向转换成点 (293/4.5)*12.75/*A4横向纸高度*/double A4_crosswise_pageSize = 600;//横向转换成点if((A4_crosswise_pageSize-height)> 30){flag = true;}else {flag = false;}return flag ;
}
/*** sheet默认设置* @param sheet*/
public static void settingDefault(HSSFSheet sheet,boolean flag){//设置不显示网格线sheet.setDisplayGridlines(false);//默认列宽sheet.setDefaultColumnWidth(8);/*设置打印页面为水平居中*/sheet.setHorizontallyCenter(true);/**默认行高*/sheet.setDefaultRowHeightInPoints((short)15);/*设置页边距*/sheet.setMargin(HSSFSheet.TopMargin,(short) 0.6);sheet.setMargin(HSSFSheet.BottomMargin,(short) 0.6);sheet.setMargin(HSSFSheet.LeftMargin,(short) 0.2);sheet.setMargin(HSSFSheet.RightMargin,(short) 0.2);/*置顶*/sheet.setVerticallyCenter(false);/*打印设置*/HSSFPrintSetup printSetup = sheet.getPrintSetup();if(flag){/*默认横向打印*/printSetup.setLandscape(true);/*页高设置*/printSetup.setFitHeight((short)610);}else {/*默认纵向打印*/printSetup.setLandscape(false);/*页高设置*/printSetup.setFitHeight((short)850);}//A4纸printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);}
java POI excel导出自定义分页问题相关推荐
- java poi excel导出
直接上代码 0. pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypo ...
- java poi excel导出2003版改成2007版本的时候报错
03版本: HSSFWorkbook book =new HSSFWorkbook();---并无报错 07版本: XSSFWorkbook book =new XSSFWorkbook(); 报错内 ...
- Java POI Excel导入导出
Java POI Excel导入导出 1.maven引入依赖 2.导入Excel 3.导出Excel 1.maven引入依赖 <!-- POI Excel 操作 --> <depen ...
- java实现数据的Excel导出, 自定义导出字段, 转换字典值
java实现数据的Excel导出, 自定义导出字段, 转换字典值 第一版代码: 基础功能跳转此文章java自定义Excel导出工具: 简介 新增功能: 添加自定义字段导出功能, 用户可以选择字段进行导 ...
- java实现excel导出合并单元格
随着数据的不断增长,很多时候需要将数据导出到Excel中进行分析.处理和展示.而Java作为一种流行的编程语言,自然也提供了很多实现Excel导出的方法.本文将介绍如何使用Java实现Excel导出, ...
- java poi pdf 导出
java poi pdf 导出 (java poi pdf导出 文字+图片两张放置一行) 思路:流传入图片 ,pdf没有行的概念,只有列即为一行,两张图片可以先建立一列在一列总再建立两列各放置一张图片 ...
- java中Excel导出echart图片
java中Excel导出echart图片 1.在生成echart的前端代码生成图片代码后Echart.setOption(captestRcapEchartOption, true);后面加上以下代码 ...
- java poi word导出
java poi word导出 (含有文字,图像) 导出word效果如下: 思路:建立预期导出word效果,设置为模板,然后填充对应信息,注意,加粗,居中等一些图片,文字格式预先设置好.然后进行文字或 ...
- Java POI Excel移动行和复制行的处理
目录 Java POI Excel移动行和复制行的处理 坑点: 实现的代码 Java POI Excel移动行和复制行的处理 POI操作Excel时,不支持移动行的操作,因此在需要通过复制行+删除行+ ...
- java - poi递归导出树结构Excel,导入树结构Excel,树结构递归查询,新增,修改,删除
工作中设计树结构增删改查,导入,导出操作,搜索 POI导入导出树结构Excle 相关博客较少,故写博客用以记录分享. 文章目录 一.表结构设计,导入导出模板. 二.递归查询树结构 1.思路如下 2.代 ...
最新文章
- 【IT基础】常见的开发文档
- 网站建设想要出类拔萃还要从基础上做创新
- ai人工智能服务器操作系统,全球首款100%纯国产的AI操作系统来了,但说媲美Windows有意义吗...
- R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介
- jboss与nginx_JBoss BRMS与JasperReports进行报告
- c语言保存后怎么打开文件,保存打开文件之后,怎么也不能在显示函数中出来。。...
- 作者:韩芳(1987-),女,中国科学院计算机网络信息中心工程师
- sql int 比较_分享 21 个编写 SQL 的好习惯
- 别人加薪你加班,征服老板才是王道
- 囚徒困境(博弈论的诡计)
- [原创]关于comsenz 公司 系列论坛类型开源网站搭建的心得
- 【原】==与isEqual的比较
- VScode C语言环境搭建教程
- 汽车电子行业常见缩略词(前视摄像头相关)
- 微盟电子商城网络交易系统——Day01【项目介绍、项目环境搭建、快速搭建后台管理系统】
- 升级Windows 10 22H2的五种方法
- WHM系列:WHM数据迁移(WHM→WHM)
- python打包exe报错编码问题_python打包成exe,但执行exe报错,求解。
- Arcpy基础入门-4、arcpy工具进阶
- 一个创业者的心理独白,是美妆溪妍给了我希望