excel转pdf(poi+itextpdf) 您所在的位置:网站首页 pdf文件转换excel文件 excel转pdf(poi+itextpdf)

excel转pdf(poi+itextpdf)

2023-08-28 12:12| 来源: 网络整理| 查看: 265

这个是参考其它文章做的demo,哈哈忘记是哪位大神的了。 供学习用。 使用poi+itextpdf 中文字体可能需要itext-asian

实现原理: 先使用poi将excel转为poi对象,再从poi对象中的内容转为itexpdf的对象

思路步骤: 1、创建pdf文件对象:Document

Document document = new Document(PageSize.A4.rotate()); //设置字体 BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(baseFont); font.setSize(13);

2、设置pdf输出位置

//创建pdf的writer实例对象 PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("C:\\Users\\dd\\Desktop\\PdfTable3.pdf"));

3、打开文件对象,进行pdf操作

document.open();

4、将poi对象转为itexpdf的对象

//poi操作excel HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File("C:\\Users\\dd\\Desktop\\3234.xls"))); //获取第一个工作表 HSSFSheet sheet = workbook.getSheetAt(0); int column = sheet.getRow(0).getLastCellNum(); int row = sheet.getPhysicalNumberOfRows(); //根据excel定义pdf工作表的总行数,创建pdf的table对象 PdfPTable table = new PdfPTable(column-sheet.getRow(0).getFirstCellNum()); //转换 String str = null; for (int i = sheet.getFirstRowNum(); i //得到excel单元格的内容 HSSFCell cell = sheet.getRow(i).getCell(j); if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { str = (int)cell.getNumericCellValue() + ""; }else{ str = cell.getStringCellValue(); } //创建pdf单元格对象,并往pdf单元格对象赋值。 PdfPCell cells = new PdfPCell(new Paragraph(str, font)); //pdf单元格对象添加到table对象 table.addCell(cells); } }

5、将pdf的table对象添加到document对象,并且关闭资源。

document.add(table); document.close(); writer.close();

所有代码:

import com.itextpdf.text.*; 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 org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class PoiUtils2 { public static void main(String[] args) throws IOException, DocumentException { excelToPdf(); } public static void excelToPdf() throws IOException, DocumentException { Document document = new Document(PageSize.A4.rotate()); BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(baseFont); font.setSize(13); PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("C:\\Users\\dd\\Desktop\\PdfTable3.pdf")); document.open(); HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File("C:\\Users\\dd\\Desktop\\3234.xls"))); HSSFSheet sheet = workbook.getSheetAt(0); int column = sheet.getRow(0).getLastCellNum(); int row = sheet.getPhysicalNumberOfRows(); PdfPTable table = new PdfPTable(column-sheet.getRow(0).getFirstCellNum()); String str = null; for (int i = sheet.getFirstRowNum(); i //得到excel单元格的内容 HSSFCell cell = sheet.getRow(i).getCell(j); if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { str = (int)cell.getNumericCellValue() + ""; }else{ str = cell.getStringCellValue(); } //创建pdf单元格对象,并往pdf单元格对象赋值。 PdfPCell cells = new PdfPCell(new Paragraph(str, font)); //pdf单元格对象添加到table对象 table.addCell(cells); } } document.add(table); document.close(); writer.close(); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有