JAVA语言实现excel转pdf文件
小标 2018-10-12 来源 : 阅读 5691 评论 0

摘要:本文主要向大家介绍了JAVA语言实现excel转pdf文件,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了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频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 6
看完这篇文章有何感觉?已经有7人表态,14%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程