在现代办公中,电子表格和文档的互动显得尤为重要。许多情况下,我们需要将Excel文件(如.xlsx和.xls格式)转换为PDF格式,以便于共享和打印。本文将介绍如何使用Java和iText库实现Excel文件到PDF文件的转换。

准备工作

首先,确保你的Java环境设置正确,并下载所需的库。我们将使用Apache POI库来读取Excel文件,iText库来生成PDF文件。可以在Maven项目中添加以下依赖:

<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>2.1.4</version> <!-- 选择合适的版本 -->
</dependency>

代码示例

以下Java代码示例展示了如何将Excel文件转换为PDF文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;

import java.io.*;

public class ExcelToPDFConverter {

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

        try {
            convertExcelToPDF(excelFilePath, pdfFilePath);
            System.out.println("转换成功,PDF文件已生成。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void convertExcelToPDF(String excelFilePath, String pdfFilePath) throws IOException {
        // 创建PDF文档
        PdfWriter writer = new PdfWriter(pdfFilePath);
        PdfDocument pdfDocument = new PdfDocument(writer);
        Document document = new Document(pdfDocument);

        // 根据文件扩展名确定Workbook类型
        Workbook workbook = null;
        try (InputStream inp = new FileInputStream(excelFilePath)) {
            if (excelFilePath.endsWith("xlsx")) {
                workbook = new XSSFWorkbook(inp);
            } else if (excelFilePath.endsWith("xls")) {
                workbook = new HSSFWorkbook(inp);
            } else {
                throw new IllegalArgumentException("不支持的文件格式: " + excelFilePath);
            }

            // 遍历工作表
            for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
                Sheet sheet = workbook.getSheetAt(i);
                Table table = new Table(sheet.getRow(0).getPhysicalNumberOfCells());

                // 遍历行
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        String cellValue = getCellValue(cell);
                        table.addCell(new Paragraph(cellValue));
                    }
                }
                document.add(table);
            }
        } finally {
            if (workbook != null) {
                workbook.close();
            }
        }
        document.close();
    }

    private static String getCellValue(Cell cell) {
        String value = "";
        switch (cell.getCellType()) {
            case STRING:
                value = cell.getStringCellValue();
                break;
            case NUMERIC:
                value = String.valueOf(cell.getNumericCellValue());
                break;
            case BOOLEAN:
                value = String.valueOf(cell.getBooleanCellValue());
                break;
            case FORMULA:
                value = cell.getCellFormula();
                break;
            default:
                break;
        }
        return value;
    }
}

代码解析

  1. 引入库:需要引入Apache POI和iText库,以便于操作Excel和PDF文件。

  2. 读取Excel文件:根据文件扩展名判断使用哪个Workbook类来读取文件。我们通过InputStream读取Excel文件,然后根据其格式(.xlsx或.xls)创建相应的Workbook实例。

  3. 创建PDF文件:使用PdfWriterPdfDocument类来初始化PDF文件,通过Document对象来向PDF中添加内容。

  4. 处理Excel内容:通过双层循环遍历Excel的行和单元格,将内容提取并添加到PDF表格中。

  5. 单元格值的获取:根据单元格类型分别处理,例如字符串、数字、布尔值和公式等。

  6. 资源管理:最后确保关闭工作簿和PDF文档,以避免资源泄露。

总结

以上代码展示了如何使用Java将Excel文件转换为PDF的完整流程。通过使用Apache POI和iText库,我们可以轻松地实现这个功能。在实际应用中,该功能可以提高文档共享的灵活性,很适合用于财务报表、数据分析结果等场景。希望这篇文章能帮助你在Java项目中实现Excel到PDF的转换功能。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部