poi生成Workbook转成pdf(java实现excel转pdf)

这里excel转pdf实现的思想是:
先用poi生成workbook 然后转为pdf格式文件

controller:

CommenConstant.FILE_TYPE fileTypeEnum = CommenConstant.FILE_TYPE.getFileTypeEnum(fileType);
        if (null == fileTypeEnum) {
   
            return failure("文件类型不符合规范(pdf、excel)");
        }
XSSFWorkbook backBook;
        //数据库查出故障数据
        List<FaultRegisterVO> faultRegisterVOS = statisticsService.selectFaultRegisterMsg(date,timeType);
        //将数据生成workbook
        backBook = statisticsService.generateFaultRegisterMsgExcel(faultRegisterVOS,date,timeType);
        OutputStream osOut = response.getOutputStream();

        switch (fileTypeEnum) {
   
            case EXCLE:
                response.setHeader("Content-disposition", "attachment;filename="+ "故障排名报表"  +".xlsx");
                response.setContentType("application/vnd.ms-excel;charset=utf-8");
                backBook.write(osOut);
                osOut.close();
                osOut.flush();
                break;
            case PDF:
                ExcelConvertPdf.excelConvertPdf(backBook,osOut,response);
                osOut.close();
                osOut.flush();
                break;
            default:
                return null;
        }

枚举工具类:

    public enum FILE_TYPE{
   
        /**
         * 统计报表形式
         */
        PDF("pdf"),
        EXCLE("excle");

        String desc;

        FILE_TYPE(String desc){
   
            this.desc = desc;
        }
        public static FILE_TYPE getFileTypeEnum(String desc){
   
            for(FILE_TYPE fileType:FILE_TYPE.values()){
   
                if(fileType.desc.equals(desc)){
   
                    return fileType;
                }
            }
            return null;
        }
    }

excel转pdf工具类

import cn.hutool.core.date.DateTime;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf
### Java 实现 Excel PDF 方法 在 Java 中,可以使用多种第三方库来实现Excel 文件换为 PDF 的功能。以下是几种常见的方法及其对应的库。 #### 方法一:Aspose.Cells Aspose.Cells 是一个强大的商业库,支持处理各种电子表格操作,包括将 Excel 文件换为 PDF 格式。其主要优点在于无需依赖 Microsoft Office 即可完成换过程[^3]。 ```java import com.aspose.cells.*; public class ExcelToPdfConverter { public static void main(String[] args) throws Exception { // 加载Excel文件 Workbook workbook = new Workbook("input.xlsx"); // 设置PDF保存选项 PdfSaveOptions options = new PdfSaveOptions(); // 保存为PDF格式 workbook.save("output.pdf", options); } } ``` 上述代码展示了如何通过 Aspose.Cells 库加载 Excel 文件并将其保存为 PDF 格式的具体实现方式[^3]。 --- #### 方法二:Apache POI 和 iText 结合 虽然 Apache POI 不直接提供将 Excel 换为 PDF 的功能,但它可以帮助读取 Excel 数据。随后可以通过 iText 或其他类似的 PDF 处理工具生成 PDF 文档[^1]。 ```java import org.apache.poi.ss.usermodel.*; import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileInputStream; import java.util.Iterator; public class PoiItExtExample { public static void main(String[] args) throws Exception { FileInputStream fileInputStream = new FileInputStream("input.xlsx"); Workbook workbook = WorkbookFactory.create(fileInputStream); Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); document.open(); Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); StringBuilder rowData = new StringBuilder(); for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) { Cell cell = row.getCell(cellIndex); if (cell != null) { rowData.append(cell.toString()).append("\t"); } else { rowData.append("").append("\t"); } } Paragraph paragraph = new Paragraph(rowData.toString()); document.add(paragraph); } document.close(); fileInputStream.close(); } } ``` 此代码片段说明了如何利用 Apache POI 提取 Excel 数据并通过 iText 创建 PDF 文件的过程。 --- #### 方法三:JODConverter(基于 LibreOffice) JODConverter 可以作为桥梁连接到 LibreOffice/OpenOffice 并执行文档之间的相互换任务。它能够轻松地把 Excel 表格化为 PDF 文件[^2]。 ```java import org.jodconverter.LocalConverter; import org.jodconverter.office.OfficeManager; import org.jodconverter.office.LocalOfficeManager; public class JodConvertExample { public static void main(String[] args) { try (OfficeManager officeManager = LocalOfficeManager.builder().buildAndStart()) { LocalConverter.make(officeManager) .convert(new File("input.xlsx")) .to(new File("output.pdf")) .execute(); } catch (Exception e) { e.printStackTrace(); } } } ``` 该部分描述的是借助 JODConverter 工具配合本地安装的 LibreOffice 来达成从 ExcelPDF变流程[^2]。 --- ### 总结 以上介绍了三种不同的技术方案用于解决 Java 编程环境下由 ExcelPDF 进行化的需求。每种都有各自的特点以及适用场景: - **Aspose.Cells**: 商业化产品,易于集成且性能优越; - **Apache POI + iText**: 开源组合,灵活性高但开发成本较大; - **JODConverter**: 借助外部软件服务端口,适合批量自动化作业环境。 选择合适的解决方案取决于项目预算、时间安排和技术偏好等因素。 问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值