在现代办公中,电子表格和文档的互动显得尤为重要。许多情况下,我们需要将Excel文件(如.xlsx和.xls格式)转换为PDF格式,以便于共享和打印。本文将介绍如何使用Java和iText库实现Excel文件到PDF文件的转换。
准备工作
首先,确保你的Java环境设置正确,并下载所需的库。我们将使用Apache POI库来读取Excel文件,iText库来生成PDF文件。可以在Maven项目中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version> <!-- 选择合适的版本 -->
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>2.1.4</version> <!-- 选择合适的版本 -->
</dependency>
代码示例
以下Java代码示例展示了如何将Excel文件转换为PDF文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import java.io.*;
public class ExcelToPDFConverter {
public static void main(String[] args) {
String excelFilePath = "input.xlsx"; // Excel文件路径
String pdfFilePath = "output.pdf"; // 输出的PDF文件路径
try {
convertExcelToPDF(excelFilePath, pdfFilePath);
System.out.println("转换成功,PDF文件已生成。");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void convertExcelToPDF(String excelFilePath, String pdfFilePath) throws IOException {
// 创建PDF文档
PdfWriter writer = new PdfWriter(pdfFilePath);
PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);
// 根据文件扩展名确定Workbook类型
Workbook workbook = null;
try (InputStream inp = new FileInputStream(excelFilePath)) {
if (excelFilePath.endsWith("xlsx")) {
workbook = new XSSFWorkbook(inp);
} else if (excelFilePath.endsWith("xls")) {
workbook = new HSSFWorkbook(inp);
} else {
throw new IllegalArgumentException("不支持的文件格式: " + excelFilePath);
}
// 遍历工作表
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
Sheet sheet = workbook.getSheetAt(i);
Table table = new Table(sheet.getRow(0).getPhysicalNumberOfCells());
// 遍历行
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = getCellValue(cell);
table.addCell(new Paragraph(cellValue));
}
}
document.add(table);
}
} finally {
if (workbook != null) {
workbook.close();
}
}
document.close();
}
private static String getCellValue(Cell cell) {
String value = "";
switch (cell.getCellType()) {
case STRING:
value = cell.getStringCellValue();
break;
case NUMERIC:
value = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
value = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA:
value = cell.getCellFormula();
break;
default:
break;
}
return value;
}
}
代码解析
-
引入库:需要引入Apache POI和iText库,以便于操作Excel和PDF文件。
-
读取Excel文件:根据文件扩展名判断使用哪个
Workbook
类来读取文件。我们通过InputStream
读取Excel文件,然后根据其格式(.xlsx或.xls)创建相应的Workbook
实例。 -
创建PDF文件:使用
PdfWriter
和PdfDocument
类来初始化PDF文件,通过Document
对象来向PDF中添加内容。 -
处理Excel内容:通过双层循环遍历Excel的行和单元格,将内容提取并添加到PDF表格中。
-
单元格值的获取:根据单元格类型分别处理,例如字符串、数字、布尔值和公式等。
-
资源管理:最后确保关闭工作簿和PDF文档,以避免资源泄露。
总结
以上代码展示了如何使用Java将Excel文件转换为PDF的完整流程。通过使用Apache POI和iText库,我们可以轻松地实现这个功能。在实际应用中,该功能可以提高文档共享的灵活性,很适合用于财务报表、数据分析结果等场景。希望这篇文章能帮助你在Java项目中实现Excel到PDF的转换功能。