itext实现excel转pdf文件
1.引入jar包
<properties>
<itext.version>7.1.11</itext.version>
</properties>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>io</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>forms</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdfa</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>pdftest</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>font-asian</artifactId>
<version>${itext.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>1.1.2-beta5</version>
</dependency>
2. java代码
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;
public class PdfUtil {
public static void main(String[] args) throws IOException {
try {
excel2pdf("C:\\Users\\Administrator\\Downloads\\报表.xls","C:\\Users\\Administrator\\Downloads\\aa.pdf");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void excel2pdf(String inFilePath, String outFilePath){
PdfFont pdfFont = null;
try {
pdfFont = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try (PdfDocument pdf = new PdfDocument(new PdfWriter(new FileOutputStream(outFilePath)));
Document document = new Document(pdf, PageSize.A2.rotate());) {
String type = "xls".equals(getSuffix(inFilePath).trim()) ? "org.apache.poi.hssf.usermodel.HSSFWorkbook"
: "org.apache.poi.xssf.usermodel.XSSFWorkbook";
// 文件输入流读取文件
InputStream in = new FileInputStream(inFilePath);
// 反射创建workbook
Class workbookClass = Class.forName(type);
org.apache.poi.ss.usermodel.Workbook workbook = (org.apache.poi.ss.usermodel.Workbook) workbookClass
.getConstructor(InputStream.class).newInstance(in);
Sheet sheet = workbook.getSheetAt(0);
int row = sheet.getPhysicalNumberOfRows();
int maxColumn=0;
for (int q = sheet.getFirstRowNum(); q <=row+1; q++) {
Row r = sheet.getRow(q);
if(r==null){
continue;
}
org.apache.poi.ss.usermodel.Cell firstCell = sheet.getRow(q).getCell(0);
if(firstCell==null){
continue;
}
int currentRowMaxColumn = sheet.getRow(q).getLastCellNum();
org.apache.poi.ss.usermodel.Cell cell = sheet.getRow(q).getCell(currentRowMaxColumn-1);
if(cell==null){
continue;
}else{
maxColumn = maxColumn>currentRowMaxColumn?maxColumn:currentRowMaxColumn;
}
}
int column = maxColumn;
Table table = new Table(column);
String str = null;
boolean addHeadFlag = false;
for (int i = sheet.getFirstRowNum(); i <= row+1;i++) {
Row r = sheet.getRow(i);
if(r==null){
continue;
}
for (int j = 0; j < column; j++) {
// 获取excel单元格
org.apache.poi.ss.usermodel.Cell cell = sheet.getRow(i).getCell(j);
if (cell!=null && cell.getCellType() == CellType.NUMERIC.getCode()) {
str = cell.getNumericCellValue()+"";
}else if(cell!=null ){
str = cell.getStringCellValue();
}else{
str = null;
}
if(cell==null && j==0){
continue;
}
else if(cell==null){
Cell cells = new Cell().setFont(pdfFont).add(new Paragraph(""));
table.addCell(cells);
}else if(str!=null && str.contains("报表") && (i==sheet.getFirstRowNum() || i==sheet.getFirstRowNum()+1) && addHeadFlag ){
Cell cells = new Cell().setFont(pdfFont).add(new Paragraph(""));
table.addCell(cells);
}
else{
if (cell.getCellType() == CellType.NUMERIC.getCode()) {
str = (int) cell.getNumericCellValue() + "";
} else {
str = cell.getStringCellValue();
}
Cell cells = new Cell().setFont(pdfFont).add(new Paragraph(str));
table.addCell(cells);
addHeadFlag = true;
}
}
}
document.add(table);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getSuffix(String filePath) {
int dotIndex = filePath.lastIndexOf(".");
return filePath.substring(dotIndex + 1);
}
itext实现excel转pdf文件相关推荐
- java操作Excel、PDF文件
java操作Excel.PDF文件 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的java操作excel的工具, 在开源世界中, ...
- Office系列---将Office文件(Word、PPT、Excel)转换为PDF文件,提取Office文件(Word、PPT)中的所有图片
将Office文件转换为PDF文件,提取Office文件中的所有图片 1.Office系列---将Office文件(Word.PPT.Excel)转换为PDF文件 1.1 基于Office实现的解决方 ...
- android选择多个文件_一分钟合并多个Excel、PDF文件,3种方法任你选择,好用到没朋友...
一分钟合并多个Excel.PDF文件,3种方法任你选择,好用到没朋友 前情提要: Excel.PDF多个文件怎样合并成一个文件?需求场景: PDF文件合并 当一份完成的PDF资料分为很多份的时候,我们 ...
- Linux下命令行打开word、excel、pdf文件
Linux下命令行打开word.excel.pdf文件 1.打开word文件 wps xxx.docx xdg-open xxx.docx 2.打开excel文件 et xxx.xlsx xdg-op ...
- iText 合并多个 pdf 文件
iText 合并多个 pdf 文件 iText 合并多个 pdf 文件 核心代码 完整的类代码 参考代码 参考来源 iText 合并多个 pdf 文件 核心代码 /*** 合并多个pdf** @par ...
- pdf按照页码分割 java_java使用itext按页码拆分pdf文件详解
java使用itext按页码拆分pdf文件,代码实现如下: /** * @author viralpatel.net * * @param inputStream Input PDF file * @ ...
- Java 将 Excel 转换为 PDF 文件
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情 今天这是篇粗糙的文章,文字也较少,整理了个Java将Excel 转换为 PDF 文件的工具类.(还比较 ...
- pdf按照页码分割 java_java使用itext按页码拆分pdf文件
java使用itext按页码拆分pdf文件,代码实现如下: /** * @author viralpatel.net * * @param inputStream Input PDF file * @ ...
- 文件系统(01):基于SpringBoot框架,管理Excel和PDF文件类型
本文源码:GitHub·点这里 || GitEE·点这里 一.文档类型简介 1.Excel文档 Excel一款电子表格软件.直观的界面.出色的计算功能和图表工具,在系统开发中,经常用来把数据转存到Ex ...
最新文章
- java根据日期生成表主键_java 利用时间生成主键
- redis提高查询速度_面试小点-MySQL 的两种索引方法如何提高查询速度
- 团队组建阶段,项目经理要做些什么?
- Kafka 0.9 新消费者API
- linux I/O-记录锁(record lock)
- [转]MIPS 下非对齐访问的问题
- mysql 独享表空间_Mysql 独享表空间
- Git版本管理工具Tower for Mac
- mysql基本操作--数据库SQL操作
- java 找不到符号
- nvme SSD和sata SSD的对比
- 我的世界Java存档转移_我的世界怎么导入本地地图_我的世界中国版怎么导入地图_我的世界怎么导入存档...
- C语言:选列主元约当消元法求线性方程组唯一解
- PREFIX 参照表 网络位 对照表
- IOS中策略模式初运用
- python获得股票数据并画图
- IT界须知的故事——仙童八叛徒
- 对Rapidly-exploring Random Trees(RRT)路径规划方法的理解
- java计算机毕业设计vue.js开发红酒网站源码+mysql数据库+系统+lw文档+部署
- scratch(图形化编程工具)使用漩涡和马赛克特效做一个酷酷的背景动画
热门文章
- element ui组件的element.style怎么改?
- Hello Go(十九)、GoConvey测试框架
- 带你全面了解 Flutter,它好在哪里?它的坑在哪里? 应该怎么学?
- 完美解决win10可选更新后,usb外接键盘失灵的问题
- 信息系统项目文案学习,常见高级词汇整理记录
- 投资科技的大厂里,竟是这家冲在了前面
- excel基础知识概括
- ҈直҈播҈预҈告҈ |҈ 炎热盛夏,与Nono一起跨越高温“烤”验吧!
- marquee标签各种文字滚动
- 计算机二级考试备考access,2016年计算机二级考试Access备考基础习题(9)