Excel转pdf

Java可以使用Apache POI和iText两个库来实现Excel转PDF的功能。

这里是使用iText的方式

添加依赖

XML 复制代码
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.1.16</version>
</dependency>

下面是一个使用Apache POI将Excel转换为PDF的示例代码:

java 复制代码
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        String excelFilePath = "F:\\tmp\\input.xlsx"; // 输入的Excel文件路径
        String pdfFilePath = "F:\\tmp\\output.pdf"; // 输出的PDF文件路径

        try {
            convertExcelToPdf(excelFilePath, pdfFilePath);
            System.out.println("转换成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void convertExcelToPdf(String excelFilePath, String pdfFilePath) throws IOException {
        Workbook workbook = new XSSFWorkbook(new FileInputStream(excelFilePath));
        PdfWriter writer = new PdfWriter(new FileOutputStream(pdfFilePath));
        PdfDocument pdfDoc = new PdfDocument(writer);
        Document document = new Document(pdfDoc);
// 设置中文字体
        PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", true);

        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
            Sheet sheet = workbook.getSheetAt(i);
            document.add(new Paragraph("Sheet: " + sheet.getSheetName()).setFont(font));

            for (Row row : sheet) {
                StringBuilder rowData = new StringBuilder();
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            rowData.append(cell.getStringCellValue()).append(" ");
                            break;
                        case NUMERIC:
                            rowData.append(cell.getNumericCellValue()).append(" ");
                            break;
                        case BOOLEAN:
                            rowData.append(cell.getBooleanCellValue()).append(" ");
                            break;
                        default:
                            rowData.append(" ");
                    }
                }
                  document.add(new Paragraph(rowData.toString().trim()).setFont(font));
            }
            document.add(new Paragraph("\n")); // 分隔不同的工作表
        }

        document.close();
        workbook.close();
    }
}

注意,以上示例代码中的input.xlsx是输入的Excel文件名,output.pdf是输出的PDF文件名。

pdf生成时需要设置字体,否则生成的pdf中,中文将无法显示。

相关推荐
石马马户12 小时前
excel中使用宏绘制折线图
excel
爱昏羔14 小时前
上篇:从PDF到向量库 — 物流行业RAG系统的知识库构建全解析
python·langchain·pdf·agent·rag
tedcloud12315 小时前
Orca 部署指南:开源 AI 推理服务的 Linux 部署实践
linux·运维·服务器·人工智能·开源·自动化·excel
AI导出鸭PC端17 小时前
手机deepseek怎么导出pdf AI导出鸭
人工智能·pdf
星雨流星天的笔记本1 天前
0.0用excel拆分数据
excel
蓝创工坊Blue Foundry2 天前
PaddleOCR 本地部署教程:小模型 OCR 如何完成字段提取到 Excel
pdf·自动化·ocr·excel·paddlepaddle·paddle
wujian83112 天前
怎么用AI做excel表格 AI导出鸭来救场
人工智能·ai·excel·豆包·deepseek·ai导出鸭
用户298698530142 天前
React 前端处理 Excel 工作表复制的技术实践
javascript·react.js·excel
蓝创工坊Blue Foundry2 天前
个人藏书太多怎么整理?用 OCR 字段提取汇总成电子书目
pdf·ocr·excel·文心一言·paddlepaddle·paddle
蓝创工坊Blue Foundry3 天前
扫描件批量转 Excel:先确认要整表还原还是字段汇总
python·pdf·ocr·excel