importcom.aspose.cells.License;importcom.aspose.cells.PdfSaveOptions;importcom.aspose.cells.Workbook;/**
* 导出excel
*
* @param list 导出数据集合
* @param sheetName 工作表的名称
* @return 结果
*/publicstatic<T>voidexportExcelPdf(List<T> list,String sheetName,Class<T> clazz,HttpServletResponse response){try{String filename =encodingFilename(sheetName);
response.reset();FileUtils.setAttachmentResponseHeader(response, filename);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8");ByteArrayOutputStream os =newByteArrayOutputStream();EasyExcel.write(os, clazz).autoCloseStream(false)// 自动适配.registerWriteHandler(newLongestMatchColumnWidthStyleStrategy())// 大数值自动转换 防止失真.registerConverter(newExcelBigNumberConvert()).sheet(sheetName).doWrite(list);ByteArrayInputStream is =newByteArrayInputStream(os.toByteArray());XSSFWorkbook wb =newXSSFWorkbook(is);//设置输出格式
response.reset();
response.setContentType("application/pdf;charset=UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode("statements.pdf","utf-8"));OutputStream outputStream = response.getOutputStream();//转pdf输出ExcelUtil.toPdf(wb,outputStream);
outputStream.flush();
outputStream.close();}catch(Exception e){thrownewRuntimeException("导出Pdf异常");}}/**
* 转pdf
*
* @param wb excel
* @param outputStream 输出流
*/publicstaticvoidtoPdf(XSSFWorkbook wb,OutputStream outputStream)throwsException{// 最后输出if(!getLicense()){// 验证License 若不验证则转化出的pdf文档会有水印产生return;}ByteArrayOutputStream os =newByteArrayOutputStream();
wb.write(os);ByteArrayInputStream is =newByteArrayInputStream(os.toByteArray());Workbook we =newWorkbook(is);//隐藏workbook中不需要的sheet页。printSheetPage(we,newint[]{0});//转pdfPdfSaveOptions pdfSaveOptions =newPdfSaveOptions();
pdfSaveOptions.setAllColumnsInOnePagePerSheet(true);//写入 outputStream
we.save(outputStream, pdfSaveOptions);
is.close();
os.close();
wb.close();}/**
* 获取license 去除水印
*/publicstaticbooleangetLicense(){boolean result =false;try{InputStream is =ExcelUtil.class.getClassLoader().getResourceAsStream("\\license.xml");License aposeLic =newLicense();
aposeLic.setLicense(is);
result =true;}catch(Exception e){
e.printStackTrace();}return result;}publicstaticvoidprintSheetPage(com.aspose.cells.Workbook wb,int[] page){for(int i =1; i < wb.getWorksheets().getCount(); i++){
wb.getWorksheets().get(i).setVisible(false);}if(null== page || page.length ==0){
wb.getWorksheets().get(0).setVisible(true);}else{for(int i =0; i < page.length; i++){
wb.getWorksheets().get(i).setVisible(true);}}}
4. 将这个xml文件, 命名为License, 放在resources路径下
<License><Data><Products><Product>Aspose.Total for Java</Product></Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>
sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
</Signature></License>