智慧保安后台管理-外网项目备份
zhongrj
2023-09-17 8853292babb2ad94de4a3207966f1e83b767cd2d
src/main/java/org/springblade/common/excel/RowWriteHandler.java
@@ -6,6 +6,7 @@
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;
import org.springblade.core.tool.utils.Func;
import java.util.List;
@@ -14,31 +15,45 @@
 * @author zhongrj
 * @since 2021-9-26
 */
public class RowWriteHandler implements CellWriteHandler {
public class RowWriteHandler  implements CellWriteHandler {
   public static CellStyle cellStyle;
      @Override
      public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
   /**
    * 设置全局变量,防止  cellStyle 创建过多报错 2021-12-16 zrj
    * The maximum number of cell styles was exceeded. You can define up to 64000styles in a .xlsx workbook
    * @param cellStyle
    */
   public static void setCellStyle(CellStyle cellStyle) {
      RowWriteHandler.cellStyle = cellStyle;
   }
   @Override
   public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {
   }
   @Override
   public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
      //设置单元格格式为文本
      Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
      //自定义样式不为空时,重复利用
      if(Func.isEmpty(cellStyle)){
         cellStyle = workbook.createCellStyle();
         setCellStyle(cellStyle);
      }
      DataFormat dataFormat = workbook.createDataFormat();
      cellStyle.setDataFormat(dataFormat.getFormat("@"));
      cell.setCellStyle(cellStyle);
   }
      @Override
      public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {
         //设置单元格格式为文本
         Workbook workbook = writeSheetHolder.getSheet().getWorkbook();
         CellStyle cellStyle = workbook.createCellStyle();
         DataFormat dataFormat = workbook.createDataFormat();
         cellStyle.setDataFormat(dataFormat.getFormat("@"));
         cell.setCellStyle(cellStyle);
      }
   //@Override 加上会报错
   public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
      //@Override 加上会报错
      public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) {
   }
      }
   @Override
   public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
      @Override
      public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
      }
   }
}