Excel转pdf

1、excel-内存值--Workbook 转pdf

/**

* excel To pdf

*

* @param outPath 输出路径

* @param workbook excel-内存值

* @throws IOException

*/

public static void excelToPdf(String outPath,Workbook workbook) throws IOException, DocumentException {

Document document=null;

try{

// excel

Sheet sheet = workbook.getSheetAt(0);

//设置中文

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",

BaseFont.NOT_EMBEDDED);

//普通字体

Font fontChinese = new Font(bfChinese, 12,Font.NORMAL);

// 创建pdf

document=new Document(PageSize.A4);

// 写输出路径

PdfWriter.getInstance(document,new FileOutputStream(outPath));

// 打开文档

document.open();

// 转换

convertSheetToPdf(sheet,document,fontChinese);

}catch (Exception e){

e.printStackTrace();

}finally {

document.close();

}

}
/**

* 循环值

*

* @param sheet excel-sheet

* @param document pdf对象

* @param fontChinese 字体

*/

private static void convertSheetToPdf(Sheet sheet, Document document,Font fontChinese) {

try {

// 获取excel总列数

int totalCol = sheet.getRow(0).getPhysicalNumberOfCells();

// 准备遍历excel

Iterator<Row> rowIterator = sheet.iterator();

// 在pdf中创建一个表格

PdfPTable myTable = new PdfPTable(totalCol);

// 遍历excel, 将数据输出到pdf的表格中

PdfPCell tableCell = null;

while(rowIterator.hasNext()) {

Row row = rowIterator.next();

Iterator<Cell> cellIterator = row.cellIterator();

while(cellIterator.hasNext()) {

Cell cell = cellIterator.next();

tableCell=new PdfPCell(new Phrase(getCellValue(cell),fontChinese));

myTable.addCell(tableCell);

}

}

document.add(myTable);

} catch (DocumentException e) {

e.printStackTrace();

}

}

/**

* cell-值类型转换

*

* @param cell 单元格-列

* @return

*/

private static String getCellValue(Cell cell) {

if(cell.getCellType() == CellType.STRING){

return cell.getStringCellValue();

}else if(cell.getCellType() == CellType.NUMERIC){

return String.valueOf(cell.getNumericCellValue());

}else{

return "";

}

}

2、获取Excel文件路径转pdf

/**

* 将指定路径excel转换为pdf

*

* @param pdfPath pdf输出路径

* @param excelPath excel路径

* @throws IOException

* @throws DocumentException

*/

public static void excelToPdf(String pdfPath,String excelPath) throws IOException {

Document document=null;

Workbook workbook=null;

try{

// 读取excel

InputStream inputStream = new FileInputStream(excelPath);

workbook = new XSSFWorkbook(inputStream);

//设置中文

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",

BaseFont.NOT_EMBEDDED);

//普通字体

Font fontChinese = new Font(bfChinese, 12,Font.NORMAL);

// 创建pdf

document=new Document(PageSize.A4);

// 写输出路径

PdfWriter.getInstance(document,new FileOutputStream(pdfPath));

// 打开文档

document.open();

// 遍历工作表中的所有行和单元格,并将其添加到PDF文档中

convertWorkBookToPdf(workbook,document,fontChinese);

}catch (Exception e){

e.printStackTrace();

}finally {

document.close();

workbook.close();

}

}

/**

* 遍历工作表中的所有行和单元格,并将其添加到PDF文档中

*

* @param workbook excel

* @param document pdf

* @param fontChinese 字体

*/

private static void convertWorkBookToPdf(Workbook workbook, Document document,Font fontChinese){

try{

Sheet sheet = workbook.getSheetAt(0);

// 获取excel总列数

int totalCol = sheet.getRow(0).getPhysicalNumberOfCells();

// 在pdf中创建一个表格

PdfPTable myTable = new PdfPTable(totalCol);

// 遍历excel, 将数据输出到pdf的表格中

PdfPCell tableCell = null;

for (int j = 0; j <= sheet.getLastRowNum(); j++) {

// 行

Row row = sheet.getRow(j);

if (row != null) {

for (int k = 0; k < row.getLastCellNum(); k++) {

// 列

Cell cell = row.getCell(k);

if (cell != null) {

// 值

tableCell=new PdfPCell(new Phrase(getCellValue(cell),fontChinese));

myTable.addCell(tableCell);

}

}

}

}

document.add(myTable);

}catch (Exception e){

e.printStackTrace();

}

}

/**

* cell-值类型转换

*

* @param cell 单元格-列

* @return

*/

private static String getCellValue(Cell cell) {

if(cell.getCellType() == CellType.STRING){

return cell.getStringCellValue();

}else if(cell.getCellType() == CellType.NUMERIC){

return String.valueOf(cell.getNumericCellValue());

}else{

return "";

}

}

相关推荐
NE_STOP13 小时前
Vide Coding--AI编程工具的选择
java
码云数智-园园14 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆14 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
小宇宙Zz14 小时前
Maven依赖冲突
java·服务器·maven
swordbob14 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯14 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
十五喵源码网15 小时前
基于springboot2+vue2的租房管理系统
java·毕业设计·springboot·论文笔记
摇滚侠15 小时前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
源分享15 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Flittly15 小时前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring