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

酒店做网站的目的室内设计培训机构排名前十

酒店做网站的目的,室内设计培训机构排名前十,网络促销,如何建立公司的销售网站引言 文件的下载是一个非常常见的功能,也有一些非常好的框架可以使用,这里我们就介绍一种比较常见的场景,下载Excel模版,导入功能通常会配有一个模版下载的功能,根据下载的模版,填充数据然后再上传。 需求…

引言

文件的下载是一个非常常见的功能,也有一些非常好的框架可以使用,这里我们就介绍一种比较常见的场景,下载Excel模版,导入功能通常会配有一个模版下载的功能,根据下载的模版,填充数据然后再上传。

需求

如图所示用户下载如下模版,模版中的地区是从数据库中读出来的。
在这里插入图片描述

分析

如果模版都是固定的内容,这种比较简单,我们可以直接把模版上传到我们的文件服务器,用户下载的时候可以直接在文件服务器上下载,或者是把文件放到我们的工程里面,直接读取文件然后以流的方式返回给前端,用户直接下载。
这里比较麻烦点的就是这个模版的内容不是固定的,需要在库里查询出来,写到excel然后在返给前端。同时这个文件又有一定的样式,一般有样式的文件,我们可以根据模版填充,而不是把说有的样式都用程序代码写,程序代码写这种样式会很麻烦。所以我们这里用的方式就是填充模版

准备模版

把准备好的模版放到我们工程里面,创建文件夹template 并把文件夹设置为resource,设置为resoucre后该文件夹下面的文件在mvn打包的时候回合我们的java类打在同一个路径下,方便我们获取文件
在这里插入图片描述
在这里插入图片描述

编写下拉选项的handler

public class SelectSheetWriteHandler implements SheetWriteHandler {private String[] list;private int firstRow;private int lastRow;private int firstCol;private int lastCol;public SelectSheetWriteHandler(String[] list, int firstRow, int lastRow, int firstCol, int lastCol) {this.list = list;this.firstRow = firstRow;this.lastRow = lastRow;this.firstCol = firstCol;this.lastCol = lastCol;}@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {// 区间设置 第一列第一行和第二行的数据。由于第一行是头,所以第一、二行的数据实际上是第二三行CellRangeAddressList cellRangeAddressList = new CellRangeAddressList(firstRow, lastRow, firstCol, lastCol);DataValidationHelper helper = writeSheetHolder.getSheet().getDataValidationHelper();DataValidationConstraint constraint = helper.createExplicitListConstraint(list);DataValidation dataValidation = helper.createValidation(constraint, cellRangeAddressList);dataValidation.setShowErrorBox(true);writeSheetHolder.getSheet().addValidationData(dataValidation);}
}

下载的方法

 public void export(HttpServletResponse response) throws IOException {//模板文件InputStream templateFile = TenantInsuranceFundServiceImpl.class.getResourceAsStream("/五险一金导入模板.xlsx");//导出后的文件名String fileName =  "五险一金导入模板";List<BaseDictionaryVO> baseDictionaryVOS = dictionaryService.queryDictionaryDetail(DictionaryEnum.AREA.getCode(), DictionaryEnum.AREA.getName());Set<String> areaNameList = new HashSet<>();if(!CollectionUtils.isEmpty(baseDictionaryVOS)){areaNameList = baseDictionaryVOS.stream().map(BaseDictionaryVO::getName).collect(Collectors.toSet());}SelectSheetWriteHandler selectSheetWriteHandler = new SelectSheetWriteHandler(areaNameList.toArray(new String[areaNameList.size()]), 2, 5000, 0, 0);//写入ExcelWriter excelWriter = null;try {//流输出excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFile).registerWriteHandler(selectSheetWriteHandler).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();// 直接写入list数据 这里没有数据需要填写直接一个空集合excelWriter.fill(Arrays.asList(),  writeSheet);//浏览器下载操作response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");excelWriter.finish();} catch (Exception e) {// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");Map<String, String> map = new HashMap<String, String>();map.put("code", "1");map.put("message", "下载模板失败" + e.getMessage());response.getWriter().println(JSON.toJSONString(map));} finally {// 千万别忘记关闭流if (excelWriter != null) {excelWriter.finish();}}}
http://www.yayakq.cn/news/979928/

相关文章:

  • 免费的网站推广网上有哪些正规赚钱的平台
  • 网站在线设计广州培训网站建设
  • 中山做网站联系电话河南外贸网站制作
  • 上街郑州网站建设wordpress任意文件删除漏洞
  • 网站后台管理系统怎么登陆策划公司起名
  • 如东网站建设番禺做网站开发
  • 59网站一起做网店女鞋北京软装设计公司有哪些
  • 邯郸市住房和建设官方网站淘宝客怎样做自己的网站推广
  • 网站建设 费用预算wordpress主题lenews
  • 建设公司的网站宁波网站设计公司
  • 网站建设 网络推广做pc端网站用什么框架
  • 期末成绩管理网站开发背景安装wordpress500
  • 长春有什么好的网站制作公司上海百度推广排名
  • 个人网站做电影资源链接犯法吗域名转出过程网站能打开吗
  • 外国网站开放的浏览器合肥教育平台网站建设
  • 教育 高校 网站模板服务器维修
  • 北京网站快速排名优化网站怎么做聚合页面
  • 站点创建成功企业徽章设计
  • 新手如何给自己的网站做优化wordpress安装谷歌分析代码
  • 建设银行上虞支行网站英文网站建设的请示怎么写
  • 苏州企业建设网站价格wordpress script
  • 网站帮助页面设计网页设计师常用网站
  • 库尔勒市建设路街道办网站湘潭做网站价格问下磐石网络
  • 有没有做海报的网站推荐广州开发区官网
  • 网络推广的网站有哪些wordpress 主题制件
  • 四川建设门户网站写作网站水平哪个最好
  • 做网站游戏需要什么免费商标设计网
  • 网站布局的三种基本方法wordpress表白主题
  • wordpress企业主题下载seo排名赚能赚钱吗
  • 用jsp做一网站的流程图桂林两江四湖夜游时间