jeecgboot--根据模板自定义导出
jeecgboot–根据模板自定义导出
版本:jeecgboot2.4.3
jeecgboot框架自带的导入比较简洁,框架自带的关于导入导出的类是JeecgController,里面有导入导出的方法,但是自带的导出功能是根据实体类字段有加@Excel注解进行导出,我们在项目中可能会涉及到一些导出的个性化要求,例如还有统计功能,那就需要用模板导出来解决,具体如下:
1.后端
自定义导出业务类
/**** @param id* @return* @throws Exception*/@AutoLog(value = "历史项目预算清单-excel导出")@GetMapping(value = "/exportXsqd")public ModelAndView exportXsqd(String id) throws Exception {ProjectFilling filling = projectFillingService.getById(id);//项目名称String projecgName = filling.getProjecgName();//送审金额String chenkAmount = filling.getChenkAmount() == null ? ERROR : String.format("%,.2f", filling.getChenkAmount()); //送审金额//核减金额String cutAmount = filling.getCutAmount() == null ? ERROR : String.format("%,.2f", filling.getCutAmount());//核减金额//审定金额String definiteAmount = filling.getDefiniteAmount() == null ? ERROR : String.format("%,.2f", filling.getDefiniteAmount());//审定金额//核减率String rate = filling.getRateSum() == null ? "0.00%" : String.format("%.2f",(filling.getRateSum().multiply(new BigDecimal(100)).doubleValue())) + "%";//获取项目清单列表List<ProjectList> list = projectListService.getListByPid(id);Map<String, Object> map = new HashMap<>();List<Map<String, Object>> listMap = new ArrayList<>();if (list.size() > 0) {int i = 0;for (ProjectList p : list) {++i;Map<String, Object> mp = new HashMap<>();String cost = p.getCostName() == null ? ERROR : p.getCostName();//费用名称String parameter = p.getParameter() == null ? ERROR : p.getParameter();//品牌与技术参数String num = p.getQuantity() == null ? ERROR : p.getQuantity().toString();//数量String unit = p.getUnit() == null ? ERROR : p.getUnit();//单位String price = p.getPrice() == null ? ERROR : String.format("%,.2f", p.getPrice());//单价//浮点数转换为string,并保留两位小数 String.format("%,.2f", p.getChenkAmount())String chenk = p.getChenkAmount() == null ? ERROR :String.format("%,.2f", p.getChenkAmount());//送审金额String cut = p.getCutAmount() == null ? ERROR : String.format("%,.2f", p.getCutAmount());//核减金额String definite = p.getDefiniteAmount() == null ? ERROR : String.format("%,.2f", p.getDefiniteAmount());//审定金额String cutRate = p.getCutRate() == null ? ERROR : String.format("%.2f",p.getCutRate()) + "%";//核减率mp.put("no", i);//序号mp.put("cost", cost);mp.put("parameter", parameter);mp.put("num", num);mp.put("unit", unit);mp.put("price", price);mp.put("chenk", chenk);mp.put("cut", cut);mp.put("definite", definite);mp.put("cutRate", cutRate);//将项目清单的map添加到list中listMap.add(mp);}}//将项目清单集合添加到map中map.put("listMap", listMap);map.put("chenkAmount", chenkAmount);//项目清单总送审金额map.put("cutAmount", cutAmount);//项目清单总核减金额map.put("definiteAmount", definiteAmount);//项目清单总审定金额map.put("rate", rate);//项目清单总核减率map.put("projecgName", projecgName);//项目名称File file = new File(ResourceUtils.getURL("classpath:").getPath());//获取模板文件路径File templateFile = new File(file, "/static/xls/预算清单报表.xls");//获取模板TemplateExportParams params = new TemplateExportParams(templateFile.getAbsolutePath()); //导入模板ModelAndView mv = new ModelAndView(new JeecgTemplateExcelView()); //模板视图//添加表格参数mv.addObject(TemplateExcelConstants.PARAMS, params);//添加模板参数mv.addObject(TemplateExcelConstants.MAP_DATA, map);return mv;}
模板文件路径:
2.前端
导出方法
<a-button type="primary" icon="download" @click="handleExportXls()">导出</a-button>methods: {handleExportXls(fileName){//导出文件名if(!fileName || typeof fileName != "string"){fileName = "预算清单报表"}let param = this.getQueryParams();// if(this.selectedRowKeys && this.selectedRowKeys.length>0){// param['selections'] = this.selectedRowKeys.join(",")// }let id = this.pid;// alert(param.id)downFile(this.url.exportXlsUrl,{"id":id}).then((data)=>{if (!data) {this.$message.warning("文件下载失败")return}if (typeof window.navigator.msSaveBlob !== 'undefined') {window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls')}else{let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'}))let link = document.createElement('a')link.style.display = 'none'link.href = urllink.setAttribute('download', fileName+'.xls')document.body.appendChild(link)link.click()document.body.removeChild(link); //下载完成移除元素window.URL.revokeObjectURL(url); //释放掉blob对象}})},}
3.小bug解决
问题:导出出现下面这个提示
原因:可能是制作模板的时候用了高版本的excel,出现了未兼容,本提示是由于我用了wps来制作模板(有提示但是文件是可以正常打开)
解决:通过office365来制作模板,导出未有提示
4.Excel模板
jeecgboot--根据模板自定义导出相关推荐
- 根据 excel 模板自定义导出excel
导出excel //导出 excel 报价单 function exportbaojiaExcel(title,url,gname) {gridname=gname;var id = "&q ...
- 自定义excel导出模板并导出数据
功能需求是用户自定义导出模板,可以自定义excel的表头,并且自定义导出的列. 实现思路通过自动以注解扫描全局实体类,获取注解中标识的业务名称与类名存在数据库中,当用户上传模板时需要选择是哪一个业务名 ...
- java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)
java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...
- 单据小票打印模板自定义设计,手机收银软件APP搭配蓝牙便携打印机,移动便携打印零售单单据小票
单据小票打印模板自定义设计,手机收银软件APP搭配蓝牙便携打印机,移动便携打印零售单单据小票,轻松实现仓库条码管理,扫码入库出库盘点_哔哩哔哩_bilibili单据小票打印模板自定义设计,手机收银软件 ...
- [转] 使用模板自定义 WPF 控件
[转] 使用模板自定义 WPF 控件 ...
- 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...
- 如何在dorado中自定义导出
原理:利用servlet,IO流,实现数据的传输. 1.dorado中创建RequestCommand,其中path指向servlet 2.创建导出servlet,并自定义导出方法 public cl ...
- U9单据打印模板自定义扩展字段显示名称
UBF打印模板中,单据自定义扩展字段显示均为扩展字段值集值编码,而在实际运用过程中打印时需要显示扩展字段名称,具体实现方法如下 方式一:采用SQL系统定义函数[dbo].[fn_GetSegName] ...
最新文章
- java怎样读txt文件_【后端开辟】java怎样读写txt文件?
- 初中计算机ppt教案,初中计算机ppt教案.doc
- HALCON 1D Measure 算子初识
- 使用域超级管理员打开Exchange 2010发现没有权限
- Facebook 开源增强版 LASER,可使用90多种语言
- 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
- Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
- mysql怎么分读写_MYSQL的读写分离
- acrobat xi pro 简体中文语言支持包_在朋友圈收表情包收到手软?预感下一个好玩的功能会是它...
- 中国移动中兴ZTE F623光猫设置自动拨号启用wifi功
- Python3:获取地球实时卫星照片
- 【很赞的一片文章】android获取手机号码(主要是移动手机)
- 怎样制作透明底艺术字水印?教你在线制作艺术字的方法
- Windows鼠标右键添加cmd
- Vue实现简单的音乐播放器
- 感悟生活,由一款很火的APP拼多多,想到的
- 小红书X千瓜联合发布|小红书2021年4月创作者红人榜
- UpdateData()函数用法
- 202101-话/镜:世界因语言而不同
- Multisim14彻底卸载清除/NI Error Reporting Server
热门文章
- ansible如何批量杀死nohup执行的脚本进程
- html超链接怎么换行,富文本过程中我遇到的问题以及解决方法(超链接换行以及无法接收超链接鼠标事件以及br或者nbsp;标签会崩溃报错的问题)...
- 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用
- 如何成为Java软件工程师
- 绩效考核(三)——layUI前端框架
- TWS耳机行业现状:苹果想通吃,微软欲入局
- UE4 HLSL Tools For Visual Studio插件(包含.ush ,.usf 如何语法高亮)
- 数据结构可视化工具cs.usf.edu
- Android Telephony 9.0通话挂断连接处理机制(opt/Telephony)
- aiwi体感游戏--尘埃