Excel动态表头模板下载
最近遇到表头字段不固定,需要下载Excel模板的场景,特意记录一下
表头数据动态生成,根据业务场景不同加载不同表头
Controller/** * 下载动态模板 * @param response * @return */ @PostMapping(value = "/downloadTemplate", produces = "application/json;charset=UTF-8") @PreAuth(value = "buSuppDelMeritsDataMaintYW:download", project = ParamConstants.DEFAULT_PROJECT, connect = ParamConstants.DEFAULT_PERMISSION_CONNECT, logical = Logical.OR) @Log(title = TITLE_CONTENT + "清单下载", navName = NAV_NAME, actionUniqueKey = NEMU_NAME + "," + "buSuppDelMeritsDataMaintYW:download", interfaceType = InterfaceType.INSIDE, logType = "2") public void downloadTemplate(@RequestBody SrmRecVO vo, HttpServletResponse response) { buContractSignManageService.downloadTemplate(response,vo); }
ServiceImpl/** * 下载动态模板 * @param response * @return */ @Override public void downloadTemplate(HttpServletResponse response,SrmRecVO vo) { //获取动态表头 if (StringUtils.isEmpty(vo.getObjectID())&&StringUtils.isEmpty(vo.getObjectType())){ throw new BadRequestException(MsgConstants.DEFAULT_PARAMETERS_IS_NULL); } // 查询合同模板中制定表格类型变量 List variableList = buTemplateVariableService.list(new LambdaQueryWrapper() .eq(BuNonProEcmVariableEntity::getTemplateCode, vo.getObjectID()) .eq(BuNonProEcmVariableEntity::getTableFlag, BuContractManageConstants.YES_OR_NO_YES) .eq(BuNonProEcmVariableEntity::getVariableName, vo.getObjectType()) ); if (CollectionUtils.isNotEmpty(variableList)) { // 查询表格的自定义变量 List tableVariableList = buTemplateTableVariableService.list(new LambdaQueryWrapper() .eq(BuNonProEcmtableVariableEntity::getTemplateCode, vo.getObjectID()) ); if (CollectionUtils.isEmpty(tableVariableList)) { throw new BadRequestException(MsgConstants.BU_NON_PRO_CONTRACT_TEMPLATE_TABLE_ERROR); } List headers = new ArrayList<>(); for (BuNonProEcmtableVariableEntity variableEntity : tableVariableList) { headers.add(variableEntity.getVariableName()); //加载表头数据 } //创建workBook HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); HSSFSheet sheet = hssfWorkbook.createSheet(); addHeaders(hssfWorkbook,sheet,headers); String filename=vo.getObjectType()+System.currentTimeMillis(); ServletOutputStream fos = null; try { fos = response.getOutputStream(); //mime类型 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-disposition", "inline; filename = " + filename + ".xls"); hssfWorkbook.write(fos); fos.close(); } catch (Exception e) { e.printStackTrace(); } } }/** * 初始化表头 * * @param wb * @param mainSheet * @param headers */ private static void addHeaders(HSSFWorkbook wb, HSSFSheet mainSheet, List headers) { //表头样式,居中加粗 HSSFCellStyle style = wb.createCellStyle(); HSSFFont font = wb.createFont(); font.setBold(true); //字体加粗 style.setFillForegroundColor(IndexedColors.BLUE_GREY.getIndex());//设置背景色 style.setFillPattern(FillPatternType.FINE_DOTS); //设置图案样式 style.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style.setAlignment(HorizontalAlignment.CENTER); //水平居中 style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中 //生成sheet1内容,第一个sheet的第一行为标题 HSSFRow rowFirst = mainSheet.createRow(0); //冻结第一行 mainSheet.createFreezePane(0, 1, 0, 1); //写标题 for (int i = 0; i < headers.size(); i++) { HSSFCell cell = rowFirst.createCell(i); //获取第一行的每个单元格 mainSheet.setColumnWidth(i, 4000); //设置每列的列宽 cell.setCellStyle(style); //加样式 cell.setCellValue(headers.get(i)); //往单元格里写数据 } }
北向资金增持贵金属,净买入紫金矿业5。53亿元11月17日,大盘大小指数震荡走弱,午后有所回升跌幅收窄,沪指收跌0。15,创业板指数收跌0。71,科创50指数收涨0。5。两市合计成交9134亿元,量能连续两日跌破万亿水平。据2
冈仁波齐我们都在朝圣的路上一直怀揣着一个小小的心愿,就是想去西藏耍一耍,去虔诚的拜一拜,去用心感受一下当地的风土人情。其实有从朋友口中,纪录片的影像中,以及一些有关于藏族的电影中,有大概了解到一些朝圣者的画
3DM速报各大游戏公司纷纷否认接盘暴雪代理新一批国产游戏版号下发各大游戏公司纷纷否认接盘暴雪代理新一批国产游戏版号下发1。网易丁磊再谈与暴雪合作问题,腾讯回应内部暂无代理暴雪消息前途叵测,昨天近日暴雪和网易分手的消息引爆了网络,玩家和媒体议论纷
量子概率表象背后是否隐藏了新的物理确定律?头条创作挑战赛量子概率表象背后是否隐藏了新的物理确定律?司今(jiewaimuyu126。com)经典物理学在微观领域研究方面曾有二条发展路线,一条是以牛顿力学经典电磁学为基础的确
泸州老窖弃离京东,根源是价格问题?近日,泸州老窖发布了一封暂停合作函,决定暂停与京东的相关合作。文中提到,泸州老窖之所以暂停与京东方的合作,究其原因是因为京东近期多次低价销售泸州老窖52度国窖1573系列产品。京东
阿里云如何拿下制造业?不是降维打击而是一场攻坚战本月初,2022云栖大会在杭州云栖小镇召开。云栖大会的前身是阿里云开发者大会,从2015年起更名为云栖大会,是以云计算和数据智能为主题的科技展会。2022云栖大会在往年的云栖大会上
谷歌确有收买游戏厂商,但与PlayStore无关作为不少开发者眼中的屠龙勇士,敢于向AppStore和GooglePlay开火的EpicGames,确确实实也改变了奠定移动互联网繁荣基础的应用商店经济。而更高的分成比例对中小开发
为什么高德和百度都在争抢北斗?高德地图发布官方文章称,高德地图全面应用北斗系统,超半数导航已由北斗主导。同时高德正式推出了北斗卫星定位查询系统。用户在使用定位导航服务时可查看当前所调用的北斗卫星数量,以及具体编
手机一键控制车辆现在的车辆越来越智能化,可以通过手机控制车辆,但必须是进入车辆的专属APP,在相应的界面中进行操作,相当费时间,操作不丝滑,现给大家介绍一种不用进入APP,根据自己的需求,一键进行
Shopee卖家如何做优质店群?越来越多的朋友都觉得跨境电商行业的前景很大,有一些朋友选择Shopee这个平台作为运营的起点。做Shopee的卖家时常会听到一个名词Shopee店群模式,那什么是Shopee店群呢
八大定制测控软件功能让仪器操作分析显示更便捷测控软件系统可对仪器进行控制,可将仪器主体安装在产线上所需测量位置,而将测控软件安装在工作位置,进行远程操控仪器,并分析仪器检测数据。通过测控软件系统,对仪器的操作更便捷,分析数据