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中,中文将无法显示。

相关推荐
葡萄城技术团队10 小时前
告别宽表拖拽:SpreadJS 如何让 Web 表格承接 Excel 操作习惯
数据库·html·excel
如意机反光镜裸10 小时前
如何合并局域网共享文件夹中的多个 Excel 工作簿?(免 WPS 会员解决方案)
服务器·excel·wps
SamChan9011 小时前
用Playwright端到端测试PDF翻译功能:Web自动化测试实战
前端·python·ai·pdf·wpf
AI英德西牛仔11 小时前
千问导出 pdf 颜色不一样怎么办,选用 AI 导出鸭优化格式转换,多维度剖析千问内容 PDF 变色各类成因
人工智能·ai·chatgpt·pdf·deepseek·ai导出鸭
不剪发的Tony老师12 小时前
DuckDB数据分析实战:读写Excel文件
数据分析·excel·duckdb
赵广陆1 天前
企业实战:主体识别
langchain·pdf·langgraph
AI英德西牛仔1 天前
豆包导出 pdf 颜色不一样怎么办,选用 AI 导出鸭优化文档导出,结合行业白皮书数据解析色彩失真成因
人工智能·ai·chatgpt·pdf·deepseek·ai导出鸭
薰珞婷紫小亭子1 天前
如何解决IEEE期刊LaTeX 模版编译pdf出现大空白的问题
经验分享·pdf
Hello-FPGA1 天前
AI 如何自动通过 PDF 原理图生成管脚映射
人工智能·fpga开发·pdf
lengjingzju1 天前
一天掌握Vim,精华使用笔记
笔记·vim·excel