java实现excel转pdf(超简单,傻⽠式直接根据excel模版⽣成pdf,VO写值,。。
⽹上的各种excel转pdf都太复杂了,于是⾃⼰整合开源的easyexcel和excel2pdf这两个项⽬,封装了⼀个通⽤的直接根据excel⽣成pdf的项⽬供⼤家学习。
傻⽠式直接根据excel模版⽣成pdf,VO写值,通过字段上的注解定位单元格的位置
根据任意excel模版,将任意值填⼊到模版⾥⾯,然后⽣成pdf。(纯java实现)
⽀持多sheet页
举个例⼦:
excel模版如下:
然后假如这⾥要将纳税⼈识号和税款所属期这个两个单元格的值写⼊我们想要的值
public class Excel2PDFTest {
static String resourcesDir = "src/test/resources";
static String outputDir = "target/output";
@Before
public void setUp() throws Exception {
File output = new File(outputDir);
output.mkdir();
}
public static void main(String[] args) throws Exception {
//定义要写⼊到excel模版上的值
LandTaxDeclarationVO landTaxDeclarationVO =new LandTaxDeclarationVO();
//纳税⼈识别号
landTaxDeclarationVO.setTaxpayerID("test12345");
//税款所属期
landTaxDeclarationVO.setTaxPeriod("2018-10-10");
//如果要在⼀个pdf上展⽰多个sheet页⾯,就将多个sheet页对应的VO对象传⼊进去
Map<Object, String> voAndSheetName2 = new HashMap<>();
voAndSheetName2.put(landTaxDeclarationVO, "Sheet1");
String templateUrl2 = resourcesDir+"/"+"dishuitest.xls";
//将模版和要写⼊模版的值传⼊,转换成workbook
Workbook workbook = ExcelConvertPDF.outPutWorkbookByModel(voAndSheetName2, templateUrl2);        List<Workbook> workbooks = new ArrayList<>();
workbooks.add(workbook);
//设置导出的页⾯的⼤⼩
RectangleReadOnly pageSize = new RectangleReadOnly(1000.0F, 850.0F);
//定义输出流也可以⽀持web的httpRespone
String pathOfPdf = resourcesDir +"/"+ "test1.pdf";
FileOutputStream fos = new FileOutputStream(pathOfPdf);
ExcelConvertPDF.ExcelConvertPDF(workbooks, fos, pageSize);
}
}
这样我将模版放到了resource⽬录下
运⾏结果:
在excel模版⾥⾯写⼊数据,需要要定⼀个VO对象,在那个VO对象⾥⾯,定义⾃⼰的数据和坐标,写
了个注解 这样就很⽅便了。 注解⾥⾯写坐标(⾏和列) 然后字段⾥⾯填⾃⼰要的值
public class LandTaxDeclarationVO {
//纳税⼈识别号第⼆⾏第⼆列
@CellVal(row = 2,col = 2)
private String taxpayerID;
//纳税所属期第三⾏第⼆列
@CellVal(row=3,col=2)
private String taxPeriod;
//填表⽇期
@CellVal(row = 3,col = 8)
private String newDate;
/
/账套名称
@CellVal(row = 4,col = 7)
private String accountCodeName;
//1-1  主表格24数据合计24-1
@CellVal(row = 11,col = 3)
private BigDecimal oneOneValue;
//1-2
@CellVal(row = 11,col = 4)
private BigDecimal oneTwoValue;
.....
}
这个是整合了原作者的excel2pdf项⽬和另⼀个easyexcel项⽬⽽来,修复原作者的⼀些bug和poi版本冲突。 基于时间,做的有些粗糙,但也勉强够⽤了,有兴趣的同学可以⾃⼰去补充⼀些功能excel最强教科书完全版pdf
这个⽬前只⽀持xls模版。
如果要做web项⽬⾥⾯的pdf导出,需要将返回流换成httprespone
其次就是 模版⽂件,放到resource⽬录下之后,需要web层,在maven的l⾥⾯加⼀个过滤条件,以免在打包的时候把模版打包进去破坏
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>${ding}</encoding>
<nonFilteredFileExtensions>
<!--//xlsx结尾的⽂件不-->
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。