|
@@ -162,6 +162,47 @@ public class CommunityService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public void downloadFormwork(UserLoginedConvertVO loginUser, HttpServletResponse response) throws Exception {
|
|
|
+
|
|
|
+ List<CommunityVO> records = new ArrayList<>();
|
|
|
+ InputStream excelTemplateIs = null;
|
|
|
+ try {
|
|
|
+ response.reset(); // 非常重要
|
|
|
+ response.addHeader("Access-Control-Allow-Origin", "*");
|
|
|
+ response.setContentType("application/vnd.ms-excel");
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
+ final String fileName = URLEncoder.encode("Community", "UTF-8");
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + "_" + System.currentTimeMillis() + ".xlsx");
|
|
|
+
|
|
|
+ // 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
|
|
+ // {} 代表普通变量 {.} 代表是list的变量
|
|
|
+
|
|
|
+ excelTemplateIs = this.getClass().getResourceAsStream("/static/template/export/IdenCommunityExportTemplate.xlsx");
|
|
|
+
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(excelTemplateIs).build();
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet("小区表").build();
|
|
|
+ // 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
|
|
|
+ // forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
|
|
|
+ // 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
|
|
|
+ // 如果数据量大 list不是最后一行 参照另一个
|
|
|
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
|
|
|
+ excelWriter.fill(records, fillConfig, writeSheet);
|
|
|
+
|
|
|
+ excelWriter.finish();
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if(excelTemplateIs != null){
|
|
|
+ try {
|
|
|
+ excelTemplateIs.close();
|
|
|
+ } catch (IOException ioe) {
|
|
|
+ ioe.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 导入
|
|
|
* @param multipartFile
|