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--根据模板自定义导出相关推荐

  1. 根据 excel 模板自定义导出excel

    导出excel //导出 excel 报价单 function exportbaojiaExcel(title,url,gname) {gridname=gname;var id = "&q ...

  2. 自定义excel导出模板并导出数据

    功能需求是用户自定义导出模板,可以自定义excel的表头,并且自定义导出的列. 实现思路通过自动以注解扫描全局实体类,获取注解中标识的业务名称与类名存在数据库中,当用户上传模板时需要选择是哪一个业务名 ...

  3. java使用EasyExcel实现导入导出几种方式(导入、模板导出、和不需要模板的导出)

    java通过EasyExcel实现导入导出(导入.模板导出.和不需要模板的导出) 此文章只是涉及到简单的导入导出 通过实体模板导入数据 无实体模板导入数据 导出数据 通过模板导出数据 使用到的mave ...

  4. 单据小票打印模板自定义设计,手机收银软件APP搭配蓝牙便携打印机,移动便携打印零售单单据小票

    单据小票打印模板自定义设计,手机收银软件APP搭配蓝牙便携打印机,移动便携打印零售单单据小票,轻松实现仓库条码管理,扫码入库出库盘点_哔哩哔哩_bilibili单据小票打印模板自定义设计,手机收银软件 ...

  5. [转] 使用模板自定义 WPF 控件

      [转] 使用模板自定义 WPF 控件                                                                                 ...

  6. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  7. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  8. 如何在dorado中自定义导出

    原理:利用servlet,IO流,实现数据的传输. 1.dorado中创建RequestCommand,其中path指向servlet 2.创建导出servlet,并自定义导出方法 public cl ...

  9. U9单据打印模板自定义扩展字段显示名称

    UBF打印模板中,单据自定义扩展字段显示均为扩展字段值集值编码,而在实际运用过程中打印时需要显示扩展字段名称,具体实现方法如下 方式一:采用SQL系统定义函数[dbo].[fn_GetSegName] ...

最新文章

  1. java怎样读txt文件_【后端开辟】java怎样读写txt文件?
  2. 初中计算机ppt教案,初中计算机ppt教案.doc
  3. HALCON 1D Measure 算子初识
  4. 使用域超级管理员打开Exchange 2010发现没有权限
  5. Facebook 开源增强版 LASER,可使用90多种语言
  6. 面板数据回归模型(固定效应、随机效应、混合回归、变系数)、面板数据AR、VAR模型
  7. Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
  8. mysql怎么分读写_MYSQL的读写分离
  9. acrobat xi pro 简体中文语言支持包_在朋友圈收表情包收到手软?预感下一个好玩的功能会是它...
  10. 中国移动中兴ZTE F623光猫设置自动拨号启用wifi功
  11. Python3:获取地球实时卫星照片
  12. 【很赞的一片文章】android获取手机号码(主要是移动手机)
  13. 怎样制作透明底艺术字水印?教你在线制作艺术字的方法
  14. Windows鼠标右键添加cmd
  15. Vue实现简单的音乐播放器
  16. 感悟生活,由一款很火的APP拼多多,想到的
  17. 小红书X千瓜联合发布|小红书2021年4月创作者红人榜
  18. UpdateData()函数用法
  19. 202101-话/镜:世界因语言而不同
  20. Multisim14彻底卸载清除/NI Error Reporting Server

热门文章

  1. ansible如何批量杀死nohup执行的脚本进程
  2. html超链接怎么换行,富文本过程中我遇到的问题以及解决方法(超链接换行以及无法接收超链接鼠标事件以及br或者nbsp;标签会崩溃报错的问题)...
  3. 浅谈Linux下傻瓜式磁盘分区工具cfdisk的使用
  4. 如何成为Java软件工程师
  5. 绩效考核(三)——layUI前端框架
  6. TWS耳机行业现状:苹果想通吃,微软欲入局
  7. UE4 HLSL Tools For Visual Studio插件(包含.ush ,.usf 如何语法高亮)
  8. 数据结构可视化工具cs.usf.edu
  9. Android Telephony 9.0通话挂断连接处理机制(opt/Telephony)
  10. aiwi体感游戏--尘埃