java使用openOffice将excel转换pdf时,将所有列显示在一页

1.接上文,格式转换的基础问题已解决,但还有些细节问题需要单独处理,如excel转换至pdf时,如何将所有列显示在一页的问题,此问题大家都有遇到,解决方案也比较多,我也尝试过重写某类,来实现自定义pdf页面篇幅大小问题,但现在有个更优的方案给到大家,利用逆向思维,在excel转换pdf前,优先对excel进行预处理,如使用poi组件,将excel的所有列设置在一页,即可。

2.首先在build.gradle中引入POI依赖

java 复制代码
implementation group: 'org.apache.poi', name: 'poi', version: '5.2.3'
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '5.2.3'
implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: '5.2.3'

3.书写工具类,优先对excel进行预处理,即可。

java 复制代码
/**
     * change page size.
     */
    public void refresh(String oldFilePath, String oldType, String newFilePath) throws IOException {
        Workbook workbook = null;
        if (oldType.equals("xls")) {
            workbook = new HSSFWorkbook(new FileInputStream(oldFilePath));
        } else if (oldType.equals("xlsx")) {
            workbook = new XSSFWorkbook(new FileInputStream(oldFilePath));
        }
        Integer sheetCount = workbook.getNumberOfSheets();
        for (int i = 0; i < sheetCount; i++) {
            Sheet sheet = workbook.getSheetAt(i);
            //通过此处即可将excel中所有列放置在一页显示(打印),转换至pdf后也将在一页显示
            XSSFPrintSetup printSetup = (XSSFPrintSetup) sheet.getPrintSetup();
            printSetup.setFitHeight((short) 0);
            sheet.setFitToPage(true);
        }
        workbook.write(new FileOutputStream(newFilePath));
    }

效果预览:

xlsx文件原来多页效果:

转换为PDF后效果:

相关推荐
刘一说10 分钟前
Java 中实现多租户架构:数据隔离策略与实践指南
java·oracle·架构
beata16 分钟前
Java基础-9:深入 Java 虚拟机(JVM):从底层源码到核心原理的全面解析
java·后端
SimonKing26 分钟前
分享一款可以管理本地端口的IDEA插件:Port Manager
java·后端·程序员
索荣荣32 分钟前
Maven配置文件(pom.xml)终极指南
java·开发语言
代码栈上的思考1 小时前
SpringBoot 拦截器
java·spring boot·spring
tiantangzhixia1 小时前
Master PDF Linux 平台的 5.9.35 版本安装与自用
linux·pdf·master pdf
送秋三十五1 小时前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
雨中飘荡的记忆1 小时前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
jbtianci1 小时前
Spring Boot管理用户数据
java·spring boot·后端
Sylvia-girl1 小时前
线程池~~
java·开发语言