网站建设提供资料,网站建设英语怎么说,成都美食网站设计论文,微信公众平台小程序注销情况一#xff1a;简单的导出指定类型文档#xff0c;不要求格式 filePath-文件路径// 设置响应头response.setContentType(application/octet-stream);// 字符集处理#xff0c;确保文件名的正确显示response.setHeader(Content-Disposition,简单的导出指定类型文档不要求格式 filePath-文件路径// 设置响应头response.setContentType(application/octet-stream);// 字符集处理确保文件名的正确显示response.setHeader(Content-Disposition,attachment;filename new String(filename.getBytes()));// 读取文件内容并写入到响应输出流中Path filePath Paths.get(filePath);try {Files.copy(filePath, response.getOutputStream());} catch (IOException e) {throw new BizException(文件导出失败);}情况二将各种命令格式混乱的数据导入到excel,这种情况需要注意视觉效果
为避免所有数据输出到一行可新建一个集合每一行放入一个新的List ListString row new ArrayList();row.add(s); // 将每一行放入一个新的 List 中coms.add(row);如果你输出的数据呈块状这一块是输入这个命令下边又是属于另外的命令就考虑分隔开了这里加了换行符
if (execCom.contains(\n)) {String[] split execCom.split(\n);for (String s : split) {ListString row new ArrayList();row.add(s); // 将每一行放入一个新的 List 中coms.add(row);}}coms.add(Collections.singletonList(\n));//用于不同命令之间的分隔coms.add(Collections.singletonList(\n));输出的时候可指定sheet定义本列格式
try {EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())//列宽度自适应.sheet(sheet1).doWrite(coms);} catch (Exception e) {log.info(文件导出失败: {}, e.getMessage());throw new BizException(文件导出失败。);}情况三将指定数据按类型导出到一个excel文件的不同的sheet这里一个类型可能包含多个不同的物品每个物品都有对应的信息
1准备数据 将数据按类型保存到集合再写入文件这里注意同一类型的数据保存同一个物品的所有信息不然达不到效果
MapString, MapString, ListListString data new HashMap();if (CollectionUtils.isNotEmpty(list)) {MapString,ListYourClass map list.stream().collect(Collectors.groupingBy(YourClass::getType));map.forEach((k,v)-{MapString, ListListString deData new HashMap();for (YourClass de : v) {ListInfoVo infoVoList previewTemplate(de.getId());ListListString coms new ArrayList();infoVoList.forEach(template - {String execCom template.getExecCommand();if (execCom.contains(\n)) {String[] split execCom.split(\n);for (String s : split) {ListString row new ArrayList();row.add(s); // 将每一行放入一个新的 List 中coms.add(row);}}coms.add(Collections.singletonList(\n));coms.add(Collections.singletonList(\n));deData.put(de.getType(), coms);});}data.put(k, deData);});}2创建对象
ExcelWriter writer EasyExcel.write(outputStream).build();//可用于导出大量数据效率高3遍历角色数据
// 遍历每个角色的数据for (Map.EntryString, MapString, ListListString roleEntry : roleDeviceData.entrySet()) {String role roleEntry.getKey();MapString, ListListString devices roleEntry.getValue();// 创建一个新的Sheet页WriteSheet writeSheet EasyExcel.writerSheet(role).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();// 准备要写入的数据ListListString dataToWrite new ArrayList();int maxRowCount devices.values().stream().mapToInt(List::size).max().orElse(0);for (int i 0; i maxRowCount; i) {ListString row new ArrayList();for (ListListString deviceData : devices.values()) {if (i deviceData.size()) {row.addAll(deviceData.get(i));} else {row.add(\n); // 如果当前行没有数据填充空字符串}}dataToWrite.add(row);}
4写入数据
try {writer.write(dataToWrite,writeSheet);} catch (Exception e) {log.info(写入数据到Sheet页 {}, e.getMessage());}5导出文件关闭输出流
writer.finish();try {outputStream.flush();outputStream.close();} catch (IOException e) {throw new RuntimeException(e);}情况四导出数据到指定格式文件比如上边是不分列的文字中间是标题下边是对应数据格式
此时可通过定义不同集合再合并的形式达到效果。
// 创建一个List集合来存储前几行备注信息ListString headList new ArrayList();headList.add(#以“#”开头的行是注释行。);ListListString headRow new ArrayList();// 写入数据到Excelfor (String line : headList) {headRow.add(Arrays.asList(line));}//创建标题行集合
ListListString titleRow new ArrayList();titleRow.add(Arrays.asList(#*名称,“对象”,“类型”));//定义数据集合
ListListString dataRow new ArrayList();
并存放相应数据可在数据遍历时定义一维集合达到分行目的集合合并
//集合合并
ListListString all new ArrayList();all.addAll(headRow);all.addAll(titleRow);all.addAll(dataRow);try {//写出数据到浏览器端EasyExcel.write(response.getOutputStream()).sheet(sheet1).doWrite(all);} catch (Exception e) {throw new BizException(String.format(sheet1%s, e.getMessage()));}