Excel转pdf

ops/2024/10/9 5:22:00/

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

这里是使用iText的方式

添加依赖

<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的示例代码:

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


http://www.ppmy.cn/ops/123011.html

相关文章

PCL 计算点云中任意点的法向量

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 使用 pcl::NormalEstimation 计算特定点的法向量 2.1.2 搜索第200个点的法向量 2.1.3 可视化 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; …

(计算机毕设)基于Vue和Spring Boot的宠物救助网站设计与实现

博主可接毕设&#xff01;&#xff01;&#xff01; 毕业设计&#xff08;论文&#xff09; 基于Vue和Spring Boot的宠物救助网站设计与实现 摘 要 随着中国互联网的迅猛发展&#xff0c;传统宠物救助领域面临着信息管理繁琐、辐射范围有限、信息传播受限、丢失宠物找回几率较…

知识改变命运 数据结构【java对象的比较】

0&#xff1a;前言 在基本数据类型中&#xff0c;我们可以直接使用号比较是否相等&#xff0c;还记的学堆哪里时候&#xff0c;插入一个数据&#xff0c;就会与其他数据进行比较&#xff0c;当时我们传入的是Integer类型&#xff0c;在Integer类里面已经实现了compare。 如果…

Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

单机模式 单机模式是Hadoop最简单的运行模式。在单机模式下&#xff0c;所有Hadoop组件都运行在单个机器上&#xff0c;包括HDFS、MapReduce等。由于只有一个节点参与计算&#xff0c;单机模式适用于开发和测试阶段&#xff0c;不适合用于处理大规模数据。在单机模式下&#xf…

可视化-最小二乘法拟合直线

目录 1、最小二乘法拟合直线 2、需要用到的公式 3、计算各个参数 &#xff0c;得到函数表达式 4、可视化-绘画图像 1、最小二乘法拟合直线 double x[15] {29,34,39,44,49,54,59,64,69,74,79,84,89,94,99}; double y[15] { 0.2989,0.3036,0.3084,0.3133,0.3182,0.3231,0.…

腾讯云上传pushdocker镜像到镜像仓库

文章目录 腾讯云上传docker镜像 腾讯云上传docker镜像 >docker login ccr.ccs.tencentyun.com --usernameXXXXXX用户名>sudo docker tag mynginx:1.0 ccr.ccs.tencentyun.com/crfkitty/mynginx:1.0>docker push ccr.ccs.tencentyun.com/crfkitty/mynginx:1.0 The pu…

「Kafka」Kafka消息可靠性和重复消费问题(五)

在 Kafka 中&#xff0c;实现消息的可靠性和避免重复消费是保证数据一致性和系统稳定性的关键。Kafka 提供了多种机制来实现这两个目标。 1. Kafka 消息可靠性 Kafka 的可靠性主要体现在消息的投递和存储上&#xff0c;以确保消息不会丢失。具体来说&#xff0c;有以下几个措…

注册安全分析报告:惠农网

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…