java excel转pdf 的实现_JAVA语言实现excel转pdf文件
本文主要向大家介绍了JAVA语言实现excel转pdf文件,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
源码:package excel_pdf;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import jxl.Cell;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ExcelToPdf {
public static void main(String[] args) throws DocumentException, IOException {
Document document = new Document(PageSize.A4,0,0,50,0);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("F:/PdfTable2.pdf"));
//字体设置
/*
* 由于itext不支持中文,所以需要进行字体的设置,我这里让itext调用windows系统的中文字体,
* 找到文件后,打开属性,将文件名及所在路径作为字体名即可。
*/
//创建BaseFont对象,指明字体,编码方式,是否嵌入
BaseFont bf=BaseFont.createFont("C:\\Windows\\Fonts\\simkai.ttf", BaseFont.IDENTITY_H, false);
//创建Font对象,将基础字体对象,字体大小,字体风格
Font font=new Font(bf,13,Font.NORMAL);
int rowNum = 0;
int colNum = 0;
try {
Workbook workbook=Workbook.getWorkbook(new File("C:\\Users\\user\\Desktop\\船体生产准备接口说明0510 .xls"));
Sheet sheet=workbook.getSheet(1);
int column=sheet.getColumns();
//下面是找出表格中的空行和空列
List nullCol = new ArrayList<>();
List nullRow = new ArrayList<>();
for(int j=0;j int nullColNum = 0;
for(int i=0;i Cell cell=sheet.getCell(j, i);
String str = cell.getContents();
if(str == null || "".equals(str)){
nullColNum ++ ;
}
}
if(nullColNum == sheet.getRows()){
nullCol.add(j);
column--;
}
}
for(int i=0;i int nullRowNum = 0;
for(int j=0;j Cell cell=sheet.getCell(j, i);
String str = cell.getContents();
if(str == null || "".equals(str)){
nullRowNum ++ ;
}
}
if(nullRowNum == sheet.getColumns()){
nullRow.add(i);
}
}
PdfPTable table=new PdfPTable(column);
Range[] ranges = sheet.getMergedCells();
PdfPCell cell1=new PdfPCell();
for(int i=0;i if(nullRow.contains(i)){ //如果这一行是空行,这跳过这一行
continue;
}
for(int j=0;j if(nullCol.contains(j)){ //如果这一列是空列,则跳过这一列
continue;
}
boolean flag = true;
Cell cell=sheet.getCell(j, i);
String str = cell.getContents();
for(Range range : ranges){ //合并的单元格判断和处理
if(j >= range.getTopLeft().getColumn() && j <= range.getBottomRight().getColumn()
&& i >= range.getTopLeft().getRow() && i <= range.getBottomRight().getRow()){
if(str == null || "".equals(str)){
flag = false;
break;
}
rowNum = range.getBottomRight().getRow() - range.getTopLeft().getRow()+1;
colNum = range.getBottomRight().getColumn() - range.getTopLeft().getColumn()+1;
if(rowNum > colNum){
cell1 = mergeRow(str, font, rowNum);
cell1.setColspan(colNum);
table.addCell(cell1);
}else {
cell1 = mergeCol(str, font, colNum);
cell1.setRowspan(rowNum);
table.addCell(cell1);
}
//System.out.println(num1 + " " + num2);
flag = false;
break;
}
}
if(flag){
table.addCell(getPDFCell(str,font));
}
}
}
workbook.close();
document.open();
document.add(table);
document.close();
writer.close();
} catch (BiffException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//合并行的静态函数
public static PdfPCell mergeRow(String str,Font font,int i) {
//创建单元格对象,将内容及字体传入
PdfPCell cell=new PdfPCell(new Paragraph(str,font));
//设置单元格内容居中
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
//将该单元格所在列包括该单元格在内的i行单元格合并为一个单元格
cell.setRowspan(i);
return cell;
}
//合并列的静态函数
public static PdfPCell mergeCol(String str,Font font,int i) {
PdfPCell cell=new PdfPCell(new Paragraph(str,font));
cell.setMinimumHeight(25);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
//将该单元格所在行包括该单元格在内的i列单元格合并为一个单元格
cell.setColspan(i);
return cell;
}
//获取指定内容与字体的单元格
public static PdfPCell getPDFCell(String string, Font font)
{
//创建单元格对象,将内容与字体放入段落中作为单元格内容
PdfPCell cell=new PdfPCell(new Paragraph(string,font));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
//设置最小单元格高度
cell.setMinimumHeight(25);
return cell;
}
}
复制粘贴就好 改变地址值和转换成pdf的文件名。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
java excel转pdf 的实现_JAVA语言实现excel转pdf文件相关推荐
- java具有自动无用内存回收_Java语言程序设计(一)试卷及答案解释
Java语言程序设计(一)试卷及答案解释 本试卷共6页,满分l00分,考试时间l50分钟. 第一部分选择题 一.单项选择题:本大题共l0小题,每小题l分,共10分.在每小题列出的备选项中只有一项是最符 ...
- java第二版课后题答案_Java语言程序设计第2版第16章 课后习题答案
<Java语言程序设计第2版第16章 课后习题答案>由会员分享,可在线阅读,更多相关<Java语言程序设计第2版第16章 课后习题答案(62页珍藏版)>请在人人文库网上搜索. ...
- java两个和三个_Java语言基础(day_03)
数据类型中补充的几个小问题 1)在定义Long或者Float类型变量的时候,要加L或者f.整数默认是int类型,浮点数默认晨double. byte,short在定义的肘候,他们接收的某实是一个int ...
- JAVA读取2g数据的速度_Java 读取大容量excel
项目要求导入excel, 但是文件很大,一次性读进去会导致内存不足而报错, 下面是我解决的方法: 首先倒入需要的jar org.apache.poi poi-ooxml 3.17 org.apache ...
- java上机题四取三排列_java语言特性概述
一.前言 我们都知道java是面向对象的编程,其中四个基本特性:抽象.封装.继承.多态.这四个特性,概括起来可以这么理解,抽象.封装.继承是多态的基础,多态是抽象.封装.继承的表现. 二. JAVA ...
- java读取excel数据的方法是_java怎么读取excel文件里的数据
展开全部 下面是一个简单的读取例子,如果报"java.io.IOException: Invalid header signature; read 4503608217567241, exp ...
- java 铁路的运费与路程_Java语言程序设计2(16)
反复地看书,做题,因为本课程主要是一些理论的知识,要求记忆的内容很多,因此,必须多做题,多看书,在做题的过程中检验自己对知识的理解和掌握情况是否到位.正确.自己总结课程的内容,也是帮助理解和记忆的好方 ...
- java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...
本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...
- java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?
摘要: 下文讲述java语言中将图片转换为base64编码的方法分享,如下所示: 例: /* file为图片文件对象 filePath为转换后base64的存储位置 */ public static ...
- java生成pdf盖章合同_Java中使用 FreeMarker 生成pdf盖章合同文件
[实例简介] 1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成j ...
最新文章
- phpMyAdmin import.php 跨站脚本漏洞
- php异步方案,PHP的异步实现方式
- 用.net core 写后端—— c++外的另一种选择?
- oracle自定义数组
- 全图化引擎(AI·OS)中的编译技术
- 数据库锁表的分析与解决
- 讨教大学|FMEA成功实施的关键是什么?
- 资深码农教你写详细设计(附示例模板)
- SQL Server 数据库之索引
- 黄永成think php rest,Rest控制器
- W25QXX FLASH介绍
- 微信小程序区分开发版、体验版和正式版
- jdk版本问题:hour_day_of 0 -1
- 记一次对PUBG吃鸡外挂病毒的反制过程
- 【转】艺术设计、数字媒体、环艺、影视动画、摄影、广编专业…等…视频、教程、资讯、图库、作品汇总大全
- 【图解】给面试官解释TCP的三次握手与四次挥手-Web运用原理及网络基础
- 【实现】树莓派开机自动向微信发消息报告ip地址(无第三方代理)
- 数据丢包怎么修复_网络丢包怎么办?这些解决办法不得不知
- 电脑操作系统(Androidx86、Windows、Linux)说明
- Kaggle:Video Game Sales电子游戏销售分析(Tableau展示)
热门文章
- 云计算就业薪资怎么样 如何加入云计算行列
- C# 操作word之在表格中插入新行、删除指定行
- php 后台文章分页功能,php简单实例:文章分页功能
- 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
- 微信小程序 转发 分享功能
- CSS不规则卡片-纯CSS制作优惠券样式-CSS实现锯齿样式
- SpringBoot + Vue基本知识点荟萃
- BFS - CH2906 - 武士风度的牛
- 组合优化问题MATLAB程序,组合优化问题(一).ppt
- 如何修改ns服务器,Godaddy如何修改NS信息