excel模板报表转PDF下载
最近有一个需求,需要根据excel模板PDF报表;需要先根据excel模板生成excel文件,再由excel生成pdf文件,最后下载功;
生成excel报表
使用
easypoi
组件,详细可参考文档中excel模板部分;
使用方法概述
该方式的优势为样式与模板样式完全一致,可以实现单值属性与列表遍历;
- 在excel模板中修改单元格内容为相应的
easypoi
支持的表达式; - 定义
TemplateParam
(模板属性)和数据属性; - 调用静态方法:
ExcelExportUtil.exportExcel
excel生成PDF报表
实现方式种类
IText
纯JAVA实现的PDF生成方法,跨平台,缺点也很明显:API比较难用,同时很难处理Excel的样式;
OpenOffice
导入jar包: com.artofsolving-jodconverter
openOffice监听端口:
soffice.exe -headless -accept="socket,host=%s,port=%s;urp;" -nofirststartwizard
- 使用openOffice转换为PDF
//连接var conn = new SocketOpenOfficeConnection(hostname,port);conn.connect();//转换converter = new OpenOfficeDocumentConverter(conn);converter.convert(docFile,pdfFile);//关闭连接conn.disconnect();
优势: 跨平台;
缺点: openOffice转换成的PDF在一定程度失真,比如excel边框自动加粗等,某一些样式不支持等,但是linux服务器上的唯一选择.
windowOffice 或 wps
导入jar包: jacob-1.19.zip
安装windowOffice或wps;
- 转换:
//office命令ActiveXComponent app = new ActiveXComponent("Excel.Application");//Wps方式app = new ActiveXComponent("KET.Application");app.setProperty("Visible", false);Dispatch excels = app.getProperty("Workbooks").toDispatch();excel = Dispatch.call(excels, "Open", path, false, true).toDispatch();Dispatch.call(excel, "ExportAsFixedFormat", 0, pdfAbsPath);
优点: 完美的样式;
缺点: 仅支持window服务器;
文件下载
后端下载基础代码
response.setCharacterEncoding(CharsetUtil.UTF_8);response.setContentType("application/pdf");response.setHeader("Content-Disposition","attachment; filename=" + fileName);response.setContentLengthLong(pdfFile.length());
注意事项
- 不同浏览器支持的文件名编码格式不同,大部分使用UrlEnocde编码即可,safari浏览器需要ISO8859-1的字符串编码
前端处理
前端使用js下载blob,并创建blob的下载地址
config.responseType = "blob";
let blob = new Blob([response.data],{type: 'application/pdf'}); //创建一个blob对象
let downloadName = response.headers["content-disposition"].split(";")[1].split("filename=")[1];
let a = document.createElement('a');
let url = URL.createObjectURL(blob)
a.href = url; // response is a blob
a.download = downloadName; //文件名称
a.style.display = 'none';
document.body.appendChild(a);
a.click();
a.remove();
缺点: 在safari中出现下载文件名为:known的异常;
使用第三方组件
该方法是上一种方法的扩展,不自己创建a标签,使用file-sever组件,只需要传入blob对象即可;
FileSaver.saveAs(blob, downloadName);
缺点: 在safari中出现下载文件名为:known的异常;
前端创建真实的后端下载地址
let a = document.createElement('a');
a.href = url; // 直接为后端的url;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
a.remove();
优点:理论上所有浏览器均可正确识别文件名信息;
缺点: 因为不是通过ajax请求的后端接口,在前后端分离系统中要单独处理权限验证的东西(如token等);
转载于:https://www.cnblogs.com/417xiaoliu/p/11039102.html
excel模板报表转PDF下载相关推荐
- EasyPoi的excel模板预览与下载、导出简单/复杂数据
官方文档地址:easypoi官网,官方仅供参考,部分描述有问题 excel模板预览 准备工作 事先将整理好的excel模板存在项目中,如图 excel模板预览代码 @GetMapping(" ...
- java 通过模板替换pdf_word模板替换方案 PDF 下载
利用poi-tl实现word模板替换功能 Poi-tl是基于Apache POI的Word模板引擎,纯JAVA组件. API地址:http://deepoove.com/poi-tl/ 实现过程: ...
- springboot系列(三十一):如何实现excel模板导出成pdf文件?这你得会 | 超级详细,建议收藏
- 【粉丝福利】根据日期自动生成甘特图的Excel模板
今天和大家免费分享产品经理必备文档模板--根据日期自动生成甘特图的Excel模板 [文档下载] 这个模板可以在下方小程序里免费下载哦 [文档介绍] [Excel模板]根据日期自动生成甘特图
- php excel模板导出、openoffice excel转pdf、多文件压缩下载
最近两周都在弄关于excel模板导出.excel转pdf.多文件压缩下载.弄得头都大了,接下来说说实现的方法吧. 我用的是laravel5.1的框架,读取模板生成excel,并且插入图片,直接上代码 ...
- EBS 报表开发:XML Publisher Excel模板
除了用BI Publisher建立RTF文件排版,R12还可以使用Excel文件排版 如果想要使用xml publisher desktop for excel,BI publisher插件版本要高于 ...
- 报表中的Excel操作之Aspose.Cells(Excel模板)
本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导出Excel的处理,如果你使用微软Excel的com组件,那么对于简单的操 ...
- 报表模板哪里有?在线报表系统可以下载
在技术飞速发展的过程中,人们越来越怀疑传统的数据分析方法.对新技术和新流程的大肆宣传常常给人留下这样的印象:"过时的"现在是多余的.因此,商业智能在很大程度上已经从关于趋势和重要 ...
- 简单好用,在线PDF、抠图、OCR识字、ppt模板、Excel模板
1.ilovepdf 推荐理由:解决关于PDF的所有问题 网站地址:www.ilovepdf.com ❶ PDF 转 Word ❷ PDF 转 Excel ❸ PDF 转图片 ❹ 合并 PDF ❺ 解 ...
- Java 根据Excel模板 导出Excel报表
工作中肯定会有的报表导出的功能,咱先来理下思路 先定义好模板文件,存放到一个有权限访问的目录内 根据模板路径,获取模板文件 /*** 根据模板的路径获取模板文件对象* classpath根目录下:/t ...
最新文章
- 206. Reverse Linked List
- 仿真器(emulator)和模拟器(simulator)的区别
- python入门之函数调用第二关_猪行天下之Python基础——5.1 函数(上)
- C#泛谈 —— 变体(协变/逆变)
- maven中snapshot快照库与maven-metadata.xml
- Windows 11 dapr 环境安装
- Wannafly挑战赛18
- 消息提示框-事件冒泡
- Java 200+ 面试题补充② Netty 模块
- 关于playframework1.2.4 static 关键字使用的一些思考
- C#中创建线程的四种方式
- spss——主成分分析详解
- 应用公园制作app靠谱吗_简单靠谱的app制作工具平台,简直是不可多得啊
- (2021.10.25-10.31)小结
- GOM登录器技术研究,闪退、掉线的原因分析和解决
- linux 查看kernel log,Linux Kernel Log
- webgl中顶点着色器的varying变量,使用方法。
- Fatal error: Uncaught ArgumentCountError: Too few arguments to function 解决方法
- Qt——用在ARM板上的Mplayer(1.3.0,1.0rc4)安装编译步骤!还有,Mplayer背景抖动闪烁问题解答,终于来了!
- 【IEEE754制32位浮点数】与十进制相互转换