当前位置: 首页 > news >正文

企业网站的建设目标有哪几种南京做网站设计

企业网站的建设目标有哪几种,南京做网站设计,站长seo,湖南网络推广服务Excel导出 EasyExcel官方文档 官方文档本身写的非常详细#xff0c;我就是根据官方文档内的写Excel里web中的写实现的导出 后端 对象 需要写一个实体类 其中涉及到一些用到的EasyExcel的注解 ColumnWidth(20) 列宽设为20#xff0c;自定义的#xff0c;放在实体类上面是…Excel导出 EasyExcel官方文档 官方文档本身写的非常详细我就是根据官方文档内的写Excel里web中的写实现的导出 后端 对象 需要写一个实体类 其中涉及到一些用到的EasyExcel的注解 ColumnWidth(20) 列宽设为20自定义的放在实体类上面是整个实体类的每个字段的列宽都为20放在单个字段上则是改字段为20ContentRowHeight(10) 设置数据行的行高为10个单位HeadRowHeight(20) 设置Excel表格的表头行高度为20ExcelIgnore 在导出文件的时候忽略该字段列ExcelProperty(xxx) 导出文件原本标题行字段是数据库内写的字段加上这个注解就会变为括号内写入的文字DateTimeFormat(yyyy-MM-dd) 设置日期格式自定义 Data ColumnWidth(20) public class WarnVo {//传输给前端展示//idExcelIgnoreprivate Long id;//车间ExcelProperty(车间)private String workshops;//设备编号ExcelProperty(设备编号)private String deviceNumber;//设备名称ExcelProperty(设备名称)private String deviceName;//设备型号ExcelProperty(设备型号)private String deviceModel;//维保到期时间ExcelProperty(维保到期时间)DateTimeFormat(yyyy-MM-dd)private Date tainEndTime;//预警时间ExcelProperty(预警时间)DateTimeFormat(yyyy-MM-dd)private Date warnTime;//状态是否生成预警信息 是否被保养ExcelIgnoreprivate Integer status; }controller层 copy了官网的导出代码做了一些改变比如导出的一个字段workshops是字典不了解的可以点击vue实现查询搜索框下拉字典了解一下如果没有做字典的可以忽略这一段只能选择字典项进行输入在controller层获取到要导出的数据以及字典集合进行一个匹配判断然后置换 //文件导出/*** 文件下载并且失败的时候返回json默认失败了会返回一个有部分数据的Excel* 这种方法是将Excel文件的生成过程放在后端进行。前端发起一个请求到后端后端处理数据并生成Excel文件然后将文件返回给前端进行下载。* 这种方法的优点是可以将数据处理的压力放在后端前端只需要处理请求和下载文件的逻辑。* since 2.1.1*/GetMapping(/download)public void download(HttpServletResponse response) throws IOException {// 这里注意 有同学反应使用swagger 会导致各种问题请直接用浏览器或者用postmantry {response.setContentType(application/vnd.ms-excel);response.setCharacterEncoding(utf-8);// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName URLEncoder.encode(测试, UTF-8);response.setHeader(Content-disposition, attachment;filename fileName .xlsx);this.setExcelResponseProp(response,保养预警);ListWarnVo warnVos iTainWarnService.listAllWarn();ListSysDictEntity workList sysDictService.maintenanceList(chejian);for (WarnVo warnVo : warnVos) {for (SysDictEntity sysDictEntity : workList) {if (sysDictEntity.getValue().compareTo(warnVo.getWorkshops())0){warnVo.setWorkshops(sysDictEntity.getName());}}}// 这里需要设置不关闭流EasyExcel.write(response.getOutputStream(), WarnVo.class)// 导出Excel时在此处注册handler.registerWriteHandler(new CustomSheetWriteHandler(sysDictService)).autoCloseStream(Boolean.FALSE).sheet(保养预警).doWrite(warnVos);} catch (Exception e) {// 重置responseresponse.reset();response.setContentType(application/json);response.setCharacterEncoding(utf-8);MapString, String map new HashMap();map.put(status, failure);map.put(message, 下载文件失败 e.getMessage());response.getWriter().println(JSON.toJSONString(map));}}字典项做了下拉框需要在导出Excel的时候注册handler是一个监听器这个监听器需要自己手动装配构造器因为这个监听器没被扫描到不属于可自动装配范围 重写afterSheetCreate方法先写一个空的集合再获取字典集合遍历字典集合根据数据库的字典特性拿到字典项的某个我们需要展示出来的字段比如这里就要展示字典项的name所以把字典项的name全放入上面写的空集合中再设置下拉选项单元格列的位置key下拉选项要放到哪个单元格比如A列的单元格那就是0C列的单元格那就是2valuekey对应的那个单元格下拉列表里的数据项比如这里就是下拉选项放入字典项name的集合其余内容不变copy即可 package com.wedu.modules.tain.listener;import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; import com.wedu.modules.sys.entity.SysDictEntity; import com.wedu.modules.sys.service.SysDictService; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddressList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;public class CustomSheetWriteHandler implements SheetWriteHandler {private SysDictService sysDictService;public CustomSheetWriteHandler(SysDictService sysDictService) {this.sysDictService sysDictService;}Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}/*** 想实现Excel引用其他sheet页数据作为单元格下拉选项值* 需要重写该方法** param writeWorkbookHolder* param writeSheetHolder*/Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {// 构造样例数据该数据可根据实际需要换成业务数据// 实际数据可通过构造方法get、set方法等由外界传入ListString selectDataList new ArrayList();ListSysDictEntity list sysDictService.maintenanceList(chejian);for (SysDictEntity sysDictEntity : list) {if (sysDictEntity.getSort()!null){selectDataList.add(sysDictEntity.getName());}}// 构造下拉选项单元格列的位置以及下拉选项可选参数值的map集合// key下拉选项要放到哪个单元格比如A列的单元格那就是0C列的单元格那就是2// valuekey对应的那个单元格下拉列表里的数据项比如这里就是下拉选项1..100MapInteger, ListString selectParamMap new HashMap();selectParamMap.put(0, selectDataList);// 获取第一个sheet页Sheet sheet writeSheetHolder.getCachedSheet();// 获取sheet页的数据校验对象DataValidationHelper helper sheet.getDataValidationHelper();// 获取工作簿对象用于创建存放下拉数据的字典sheet数据页Workbook workbook writeWorkbookHolder.getWorkbook();// 迭代索引用于存放下拉数据的字典sheet数据页命名int index 1;for (Map.EntryInteger, ListString entry : selectParamMap.entrySet()) {// 设置存放下拉数据的字典sheet并把这些sheet隐藏掉这样用户交互更友好String dictSheetName dict_hide_sheet index;Sheet dictSheet workbook.createSheet(dictSheetName);// 隐藏字典sheet页workbook.setSheetHidden(index, true);// 设置下拉列表覆盖的行数从第一行开始到最后一行这里注意Excel行的// 索引是从0开始的我这边第0行是标题行第1行开始时数据化可根据实// 际业务设置真正的数据开始行如果要设置到最后一行那么一定注意// 最后一行的行索引是1048575千万别写成1048576不然会导致下拉列表// 失效出不来CellRangeAddressList infoList new CellRangeAddressList(1, 1048575, entry.getKey(), entry.getKey());int rowLen entry.getValue().size();for (int i 0; i rowLen; i) {// 向字典sheet写数据从第一行开始写此处可根据自己业务需要自定// 义从第几行还是写写的时候注意一下行索引是从0开始的即可dictSheet.createRow(i).createCell(0).setCellValue(entry.getValue().get(i));}// 设置关联数据公式这个格式跟Excel设置有效性数据的表达式是一样的String refers dictSheetName !$A$1:$A$ entry.getValue().size();Name name workbook.createName();name.setNameName(dictSheetName);// 将关联公式和sheet页做关联name.setRefersToFormula(refers);// 将上面设置好的下拉列表字典sheet页和目标sheet关联起来DataValidationConstraint constraint helper.createFormulaListConstraint(dictSheetName);DataValidation dataValidation helper.createValidation(constraint, infoList);sheet.addValidationData(dataValidation);}} } 测试 后端写好了可以使用postman进行测试 token失效可以去网页上f12找一个有效的token复制一下 发送请求并且下载就可以导出文件进行查看了 前端 template el-button typeprimary iconel-icon-share clickdownload()一键导出/el-buttonmethods 设置相应类型非常重要不设置导出的文件也不能用 link.setAttribute(download, 保养预警.xlsx) 这句为导出文件命名 //文件导出download() {this.$http({url: this.$http.adornUrl(/tain/warn/download),method: get,//设置响应类型重要responseType: blob,}).then((response) {const url window.URL.createObjectURL(new Blob([response.data]));const link document.createElement(a);link.href url;link.setAttribute(download, 保养预警.xlsx);document.body.appendChild(link);link.click();});},前后端都写完后就可以启动项目在前端页面点击下载按钮发送请求成功就可以成功下载文件 前端发起一个请求到后端后端处理数据并生成Excel文件然后将文件返回给前端进行下载。这种方法的优点是可以将数据处理的压力放在后端前端只需要处理请求和下载文件的逻辑。缺点是需要前后端的配合增加了后端的工作量。
http://www.zqtcl.cn/news/120785/

相关文章:

  • 做网站必须知道的问题wordpress制作论坛
  • 怎样在建设部网站查资质证书网页设计有哪些岗位
  • 安徽中色十二冶金建设有限公司网站cad制图初学入门
  • 开发网站监控工具网上开店怎么找货源
  • 标准网站建设报价单私密浏览器直播
  • wordpress焦点图网站seo分析
  • 域名申请哪个网站好江西有色建设集团有限公司网站
  • 新乡市做网站的公司百度推广开户费用多少
  • 免费建网站哪个平台好php 未定义函数wordpress
  • 个人网站 域名选择郑州那家做网站便宜
  • 网站建设技术合伙人的技术股份全国免费发布信息网站大全
  • 兼职网站平台有哪些新手怎么学做网站
  • 有没有直接做网站的软件iis一个文件夹配置多个网站
  • 网站怎么屏蔽ip访问信息发布网站建设
  • 陕西省住房城乡建设厅网站管理中心电信服务器
  • 外国优秀网站设计程序员做任务的网站
  • 购物网站项目经验开发一个游戏软件需要多少钱
  • 专业的大连网站建设电商网站支付方案
  • 手机如何建设网站首页株洲搜索引擎优化
  • 辉县市建设局网站制作网站站用的软件下载
  • 什么网站广告做多有没有不花钱建设网站的方法
  • 网站开发技术总监面试题五大门户网站分别是
  • 福州自助建设网站网站开发工具蜡笔小新
  • 扬州市住房和城乡建设网站html5 后台网站模板
  • 网站建设与设计意义宜兴做宠物的网站
  • 苏州建设工程人才招聘网信息网站wordpress前端库加速
  • 浙江手机版建站系统信息应用商店下载app
  • 广告投放网站动画设计模板
  • 网站发外链的好处页面跳转 英文
  • 黑链 对网站的影响网页小游戏网站有哪些