在一般情况下,报表输入一般以Excel和PDF格式为主,Excel生成有很多已经相当成熟的工具,但现阶段PDF生成相对较为生硬。Spire.PDF提供了更好的解决方案,可以高效无损的将Excel转换为PDF文件。
Spire.PDF官网地址:https://cloud.e-iceblue.cn/index.php/net-webapi-sdk-downloads。
· Maven依赖
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>2.2.0</version>
</dependency>
由于Spire.PDF转换工具在Maven公用仓库中没有,需要额外引用仓库链接:
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
· Excel转PDF工具类
package com.arhorchin.securitit.files.excel;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ExcelToPdfUtil {
/**
* Excel文件转Pdf.
* @param excelPath Excel文件路径.
* @param pdfPath Pdf文件路径.
* @throws Exception .
*/
public static void excelToPdf(String excelPath, String pdfPath) throws Exception {
// 加载Excel文档.
Workbook wb = new Workbook();
wb.loadFromFile(excelPath);
// 调用方法保存为PDF格式.
wb.saveToFile(pdfPath, FileFormat.PDF);
}
/**
* Excel文件转Pdf.
* @param excelPath Excel文件路径.
* @param pdfPath Pdf文件路径.
* @param sheetIndex sheet页序号.
* @throws Exception .
*/
public static void excelToPdf(String excelPath, String pdfPath, int sheetIndex) throws Exception {
// 加载Excel文档.
Workbook wb = new Workbook();
wb.loadFromFile(excelPath);
Worksheet sheet = wb.getWorksheets().get(sheetIndex);
// 调用方法保存为PDF格式.
wb.saveToFile(pdfPath, FileFormat.PDF);
}
}
· Excel转PDF测试类
package com.arhorchin.securitit.com.files.excel;
import com.arhorchin.securitit.files.excel.ExcelToPdfUtil;
public class ExcelToPdfUtilTester {
public static void main(String[] args) throws Exception {
String excelPath = "C:/Users/Administrator/Downloads/个人文件/test.xls";
String pdfPath = "C:/Users/Administrator/Downloads/个人文件/test.pdf";
ExcelToPdfUtil.excelToPdf(excelPath, pdfPath);
String pdfSheetPath = "C:/Users/Administrator/Downloads/个人文件/test-sheet-1.pdf";
ExcelToPdfUtil.excelToPdf(excelPath, pdfSheetPath, 0);
}
}
测试类中Excel文件如下:
转换后PDF文件如下:
· 总结
· Spire.PDF提供了丰富的功能,可以实现各种类型文件的转换。
· Spire.PDF免费版本转换的文件页数有限,单文档过多页数文件转换不能满足。