Explorar el Código

【CHG】修改导出Excel工具方法

zhaomn hace 3 años
padre
commit
71e9f72c0e

+ 1 - 1
railway-business/src/main/java/com/railway/business/catenary/service/impl/BusJcbDmcgyqServiceImpl.java

@@ -188,7 +188,7 @@ public class BusJcbDmcgyqServiceImpl extends BusJcabServiceImpl implements IBusJ
     List<BusJcbDmcgyq> list = busJcbDmcgyqMapper.getJcebList(query);
     String fileName = "地磁感应器检测记录.xls";
     String templateFileName = templatePath + "/excel/地磁感应器检测记录.xls";
-    return new EasyExcelUtil().writeExcel(fileName, templateFileName, list);
+    return new EasyExcelUtil().writeExcel(list, templateFileName, fileName);
   }
 
   /**

+ 1 - 1
railway-business/src/main/java/com/railway/business/catenary/service/impl/BusJcbGlkgServiceImpl.java

@@ -217,7 +217,7 @@ public class BusJcbGlkgServiceImpl extends BusJcabServiceImpl implements IBusJcb
     list = list.stream().map(this::formatOne).collect(Collectors.toList());
     String fileName = "隔离开关检测记录.xls";
     String templateFileName = templatePath + "/excel/隔离开关检测记录.xls";
-    return new EasyExcelUtil().writeExcel(fileName, templateFileName, list);
+    return new EasyExcelUtil().writeExcel(list, templateFileName, fileName);
   }
 
   private BusJcbGlkg formatOne(BusJcbGlkg busJcbGlkg) {

+ 1 - 1
railway-business/src/main/java/com/railway/business/catenary/service/impl/BusJcebLbjghjlServiceImpl.java

@@ -131,7 +131,7 @@ public class BusJcebLbjghjlServiceImpl extends BusJcebServiceImpl<BusJcebLbjghjl
     List<BusJcebLbjghjl> list = busJcebLbjghjlMapper.getJcebList(query);
     String fileName = "零部件更换记录.xls";
     String templateFileName = templatePath + "/excel/零部件更换记录.xls";
-    return new EasyExcelUtil().writeExcel(fileName, templateFileName, list);
+    return new EasyExcelUtil().writeExcel(list, templateFileName, fileName);
   }
 
 }

+ 1 - 1
railway-business/src/main/java/com/railway/business/catenary/service/impl/BusJcebQmjcjlServiceImpl.java

@@ -131,6 +131,6 @@ public class BusJcebQmjcjlServiceImpl extends BusJcebServiceImpl<BusJcebQmjcjl>
     List<BusJcebQmjcjl> list = busJcebQmjcjlMapper.getJcebList(query);
     String fileName = "全面检查记录.xls";
     String templateFileName = templatePath + "/excel/全面检查记录.xls";
-    return new EasyExcelUtil().writeExcel(fileName, templateFileName, list);
+    return new EasyExcelUtil().writeExcel(list, templateFileName, fileName);
   }
 }

+ 1 - 1
railway-common/pom.xml

@@ -78,7 +78,7 @@
     <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>easyexcel</artifactId>
-      <version>2.1.6</version>
+      <version>3.1.1</version>
       <exclusions>
           <exclusion>
               <groupId>org.apache.poi</groupId>

+ 14 - 11
railway-common/src/main/java/com/railway/common/utils/poi/EasyExcelUtil.java

@@ -6,11 +6,11 @@ import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.excel.write.metadata.WriteSheet;
 import com.alibaba.excel.write.metadata.fill.FillConfig;
 import com.railway.common.utils.file.FileUploadUtils;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.List;
 import java.util.Map;
 
@@ -19,11 +19,11 @@ import java.util.Map;
  */
 public class EasyExcelUtil {
 
-  public String getExcel(Map<String, Object> params, List<?> list,
-      String template, String wordName) {
-    String filePath = FileUploadUtils.getAbsoluteFileEncoding(wordName);
-    try (InputStream is = new FileInputStream(template);
-        OutputStream os = new FileOutputStream(filePath)) {
+  public String getExcel(Map<String, Object> params, List<?> list, String template,
+      String excelName) {
+    String filePath = FileUploadUtils.getAbsoluteFileEncoding(excelName);
+    try (InputStream is = Files.newInputStream(Paths.get(template));
+        OutputStream os = Files.newOutputStream(Paths.get(filePath))) {
       WriteSheet writeSheet = EasyExcel.writerSheet().build();
       ExcelWriter excelWriter = EasyExcel.write(os).withTemplate(is)
           .excelType(ExcelTypeEnum.XLS)
@@ -32,7 +32,8 @@ public class EasyExcelUtil {
       //列表自动添加行
       FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
       excelWriter.fill(list, fillConfig, writeSheet);
-      excelWriter.fill(params, writeSheet);
+      fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
+      excelWriter.fill(params, fillConfig, writeSheet);
       excelWriter.finish();
     } catch (IOException e) {
       return null;
@@ -40,10 +41,12 @@ public class EasyExcelUtil {
     return filePath;
   }
 
-  public <T> String writeExcel(String fileName, String templateFileName, List<T> list) {
+  public <T> String writeExcel(List<T> list, String templateFileName, String fileName) {
     String filePath = FileUploadUtils.getAbsoluteFileEncoding(fileName);
-    try (InputStream is = new FileInputStream(templateFileName)) {
-      EasyExcel.write(filePath).withTemplate(is).registerConverter(new LocalDateConverter()).sheet()
+    try (InputStream is = Files.newInputStream(Paths.get(templateFileName))) {
+      EasyExcel.write(filePath).withTemplate(is)
+          .registerConverter(new LocalDateConverter())
+          .sheet()
           .doFill(list);
     } catch (IOException e) {
       return null;

+ 23 - 21
railway-common/src/main/java/com/railway/common/utils/poi/LocalDateConverter.java

@@ -2,38 +2,40 @@ package com.railway.common.utils.poi;
 
 import com.alibaba.excel.converters.Converter;
 import com.alibaba.excel.enums.CellDataTypeEnum;
-import com.alibaba.excel.metadata.CellData;
 import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.ReadCellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
-import org.springframework.stereotype.Component;
-
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import org.springframework.stereotype.Component;
 
 /**
  * LocalDate类型转换器
+ * @author fenghao
  */
 @Component
 public class LocalDateConverter implements Converter<LocalDate> {
-    @Override
-    public Class<LocalDate> supportJavaTypeKey() {
-        return LocalDate.class;
-    }
 
-    @Override
-    public CellDataTypeEnum supportExcelTypeKey() {
-        return CellDataTypeEnum.STRING;
-    }
+  @Override
+  public Class<LocalDate> supportJavaTypeKey() {
+    return LocalDate.class;
+  }
+
+  @Override
+  public CellDataTypeEnum supportExcelTypeKey() {
+    return CellDataTypeEnum.STRING;
+  }
 
-    @Override
-    public LocalDate convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty
-            , GlobalConfiguration globalConfiguration) throws Exception {
-        return LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-    }
+  @Override
+  public LocalDate convertToJavaData(ReadCellData cellData,
+      ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
+    return LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+  }
 
-    @Override
-    public CellData convertToExcelData(LocalDate localDate, ExcelContentProperty excelContentProperty
-            , GlobalConfiguration globalConfiguration) throws Exception {
-        return new CellData<>(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-    }
+  @Override
+  public WriteCellData<?> convertToExcelData(LocalDate localDate,
+      ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) {
+    return new WriteCellData<>(localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+  }
 }