本文主要向大家介绍了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文件相关推荐

  1. java具有自动无用内存回收_Java语言程序设计(一)试卷及答案解释

    Java语言程序设计(一)试卷及答案解释 本试卷共6页,满分l00分,考试时间l50分钟. 第一部分选择题 一.单项选择题:本大题共l0小题,每小题l分,共10分.在每小题列出的备选项中只有一项是最符 ...

  2. java第二版课后题答案_Java语言程序设计第2版第16章 课后习题答案

    <Java语言程序设计第2版第16章 课后习题答案>由会员分享,可在线阅读,更多相关<Java语言程序设计第2版第16章 课后习题答案(62页珍藏版)>请在人人文库网上搜索. ...

  3. java两个和三个_Java语言基础(day_03)

    数据类型中补充的几个小问题 1)在定义Long或者Float类型变量的时候,要加L或者f.整数默认是int类型,浮点数默认晨double. byte,short在定义的肘候,他们接收的某实是一个int ...

  4. JAVA读取2g数据的速度_Java 读取大容量excel

    项目要求导入excel, 但是文件很大,一次性读进去会导致内存不足而报错, 下面是我解决的方法: 首先倒入需要的jar org.apache.poi poi-ooxml 3.17 org.apache ...

  5. java上机题四取三排列_java语言特性概述

    一.前言 我们都知道java是面向对象的编程,其中四个基本特性:抽象.封装.继承.多态.这四个特性,概括起来可以这么理解,抽象.封装.继承是多态的基础,多态是抽象.封装.继承的表现. 二. JAVA ...

  6. java读取excel数据的方法是_java怎么读取excel文件里的数据

    展开全部 下面是一个简单的读取例子,如果报"java.io.IOException: Invalid header signature; read 4503608217567241, exp ...

  7. java 铁路的运费与路程_Java语言程序设计2(16)

    反复地看书,做题,因为本课程主要是一些理论的知识,要求记忆的内容很多,因此,必须多做题,多看书,在做题的过程中检验自己对知识的理解和掌握情况是否到位.正确.自己总结课程的内容,也是帮助理解和记忆的好方 ...

  8. java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...

    本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...

  9. java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?

    摘要: 下文讲述java语言中将图片转换为base64编码的方法分享,如下所示: 例: /* file为图片文件对象 filePath为转换后base64的存储位置 */ public static ...

  10. java生成pdf盖章合同_Java中使用 FreeMarker 生成pdf盖章合同文件

    [实例简介] 1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成j ...

最新文章

  1. phpMyAdmin import.php 跨站脚本漏洞
  2. php异步方案,PHP的异步实现方式
  3. 用.net core 写后端—— c++外的另一种选择?
  4. oracle自定义数组
  5. 全图化引擎(AI·OS)中的编译技术
  6. 数据库锁表的分析与解决
  7. 讨教大学|FMEA成功实施的关键是什么?
  8. 资深码农教你写详细设计(附示例模板)
  9. SQL Server 数据库之索引
  10. 黄永成think php rest,Rest控制器
  11. W25QXX FLASH介绍
  12. 微信小程序区分开发版、体验版和正式版
  13. jdk版本问题:hour_day_of 0 -1
  14. 记一次对PUBG吃鸡外挂病毒的反制过程
  15. 【转】艺术设计、数字媒体、环艺、影视动画、摄影、广编专业…等…视频、教程、资讯、图库、作品汇总大全
  16. 【图解】给面试官解释TCP的三次握手与四次挥手-Web运用原理及网络基础
  17. 【实现】树莓派开机自动向微信发消息报告ip地址(无第三方代理)
  18. 数据丢包怎么修复_网络丢包怎么办?这些解决办法不得不知
  19. 电脑操作系统(Androidx86、Windows、Linux)说明
  20. Kaggle:Video Game Sales电子游戏销售分析(Tableau展示)

热门文章

  1. 云计算就业薪资怎么样 如何加入云计算行列
  2. C# 操作word之在表格中插入新行、删除指定行
  3. php 后台文章分页功能,php简单实例:文章分页功能
  4. 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
  5. 微信小程序 转发 分享功能
  6. CSS不规则卡片-纯CSS制作优惠券样式-CSS实现锯齿样式
  7. SpringBoot + Vue基本知识点荟萃
  8. BFS - CH2906 - 武士风度的牛
  9. 组合优化问题MATLAB程序,组合优化问题(一).ppt
  10. 如何修改ns服务器,Godaddy如何修改NS信息