Java将Excel转换成PDF

简介

在实际开发中,我们经常遇到将Excel文件转换成PDF文件的需求。本文将介绍如何使用Java来实现这一功能。

准备工作

在开始之前,我们需要准备以下工具和环境:

  • Java开发环境
  • Apache POI库(用于读取和写入Excel文件)
  • iText库(用于生成PDF文件)

你可以通过以下方式获取这些工具和库:

  • 下载并安装Java开发环境:[
  • 下载Apache POI库:[
  • 下载iText库:[

实现步骤

步骤1:导入所需的库

首先,我们需要在Java项目中导入Apache POI和iText库。你可以将这两个库的JAR文件拷贝到你的项目中,然后在项目的构建路径中添加这些JAR文件。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

步骤2:读取Excel文件

接下来,我们需要读取Excel文件中的数据。以下是一个示例代码,演示如何读取Excel文件并打印每个单元格的值。

try (Workbook workbook = new XSSFWorkbook(new FileInputStream("input.xlsx"))) {
    Sheet sheet = workbook.getSheetAt(0);
    for (Row row : sheet) {
        for (Cell cell : row) {
            CellType cellType = cell.getCellType();
            if (cellType == CellType.STRING) {
                System.out.println(cell.getStringCellValue());
            } else if (cellType == CellType.NUMERIC) {
                System.out.println(cell.getNumericCellValue());
            } // 其他类型的处理...
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

步骤3:生成PDF文件

现在,我们需要使用iText库来生成PDF文件。以下是一个示例代码,演示如何创建一个PDF文档并添加内容。

try (Document document = new Document()) {
    PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
    document.open();
    
    // 添加标题
    Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18, Font.BOLD);
    Paragraph title = new Paragraph("Excel to PDF Conversion", titleFont);
    title.setAlignment(Element.ALIGN_CENTER);
    document.add(title);
    
    // 添加表格
    PdfPTable table = new PdfPTable(3);
    table.setWidthPercentage(100);
    table.setSpacingBefore(10f);
    table.setSpacingAfter(10f);
    
    // 添加表头
    Font headerFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD);
    Stream.of("Header 1", "Header 2", "Header 3").forEach(columnTitle -> {
        PdfPCell headerCell = new PdfPCell();
        headerCell.setBackgroundColor(BaseColor.LIGHT_GRAY);
        headerCell.setPadding(5);
        headerCell.setPhrase(new Phrase(columnTitle, headerFont));
        table.addCell(headerCell);
    });
    
    // 添加单元格
    for (Row row : sheet) {
        for (Cell cell : row) {
            table.addCell(cell.getStringCellValue());
        }
    }
    
    document.add(table);
    document.close();
} catch (DocumentException | IOException e) {
    e.printStackTrace();
}

步骤4:完整代码示例

下面是一个完整的代码示例,演示如何将Excel文件转换成PDF文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.*;

public class ExcelToPDFConverter {

    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook(new FileInputStream("input.xlsx"))) {
            Sheet sheet = workbook.getSheetAt(0);
            
            try (Document document = new Document()) {
                PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));
                document.open();

                // 添加标题
                Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD, 18, Font.BOLD);
                Paragraph title = new Paragraph("Excel to PDF Conversion", titleFont);
                title.setAlignment(Element.ALIGN_CENTER);
                document.add(title);

                // 添加表格
                PdfPTable table = new PdfPTable(3);
                table.setWidthPercentage(100);
                table.setSpacingBefore(10f);
                table