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 小时前
文档极速转换器 - 免费批量Word转PDF工具
pdf·word
沉到海底去吧Go13 小时前
【工具教程】PDF电子发票提取明细导出Excel表格,OFD电子发票行程单提取保存表格,具体操作流程
pdf·excel
开开心心就好14 小时前
高效Excel合并拆分软件
开发语言·javascript·c#·ocr·排序算法·excel·最小二乘法
诸葛大钢铁1 天前
PDF转PPT转换方法总结
pdf·powerpoint
沉到海底去吧Go1 天前
【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
自动化·ocr·excel·行驶证识别·行驶证识别表格·批量行驶证读取表格
漫游者Nova2 天前
PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
pdf·json·markdown·mineru
sss191s2 天前
Java 集合面试题 PDF 及常见考点解析与备考指南
java·开发语言·pdf
风筝超冷2 天前
PDF 转 Markdown
pdf
wxgnolux2 天前
网页端 js 读取发票里的二维码信息(图片和PDF格式)
pdf·jsqr
Eiceblue2 天前
C# 快速检测 PDF 是否加密,并验证正确密码
开发语言·pdf·c#·visual studio