Răsfoiți Sursa

新增导出表格样式设置 帮助方法, 解决 导出隐患问题 Excel 整改状态 已逾期 显示为 待整改的问题

zhulu 1 an în urmă
părinte
comite
e71f715670

+ 96 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/EasyExcelStyleUtils.java

@@ -0,0 +1,96 @@
+package com.xunmei.common.core.utils;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+
+
+import static org.apache.poi.ss.usermodel.BorderStyle.THIN;
+
+/**
+ * 时间工具类
+ *
+ * @author xunmei
+ */
+public class EasyExcelStyleUtils {
+
+    public static HorizontalCellStyleStrategy buildHorizontalCellStyleStrategy(){
+       return new HorizontalCellStyleStrategy(EasyExcelStyleUtils.getHeadStyle(),EasyExcelStyleUtils.getContentStyle());
+    }
+
+    public static WriteCellStyle getHeadStyle(){
+        // 头的策略
+        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
+        // 背景颜色
+//        headWriteCellStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE1.getIndex());
+//        headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
+
+        // 字体
+        WriteFont headWriteFont = new WriteFont();
+        headWriteFont.setFontName("宋体");//设置字体名字
+        headWriteFont.setFontHeightInPoints((short)14);//设置字体大小
+        headWriteFont.setBold(true);//字体加粗
+        headWriteCellStyle.setWriteFont(headWriteFont); //在样式用应用设置的字体;
+
+        // 样式
+        headWriteCellStyle.setBorderBottom(BorderStyle.THIN);//设置底边框;
+        headWriteCellStyle.setBottomBorderColor((short) 0);//设置底边框颜色;
+        headWriteCellStyle.setBorderLeft(BorderStyle.THIN);  //设置左边框;
+        headWriteCellStyle.setLeftBorderColor((short) 0);//设置左边框颜色;
+        headWriteCellStyle.setBorderRight(BorderStyle.THIN);//设置右边框;
+        headWriteCellStyle.setRightBorderColor((short) 0);//设置右边框颜色;
+        headWriteCellStyle.setBorderTop(BorderStyle.THIN);//设置顶边框;
+        headWriteCellStyle.setTopBorderColor((short) 0); //设置顶边框颜色;
+
+        headWriteCellStyle.setWrapped(true);  //设置自动换行;
+
+        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//设置水平对齐的样式为居中对齐;
+        headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);  //设置垂直对齐的样式为居中对齐;
+        headWriteCellStyle.setShrinkToFit(true);//设置文本收缩至合适
+
+        return headWriteCellStyle;
+    }
+
+    /**
+     * 内容样式
+     * @return
+     */
+    public static WriteCellStyle getContentStyle(){
+        // 内容的策略
+        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
+
+        // 背景绿色
+        // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
+//        contentWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
+//        contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
+
+        // 设置字体
+        WriteFont contentWriteFont = new WriteFont();
+        contentWriteFont.setFontHeightInPoints((short) 11);//设置字体大小
+        contentWriteFont.setFontName("宋体"); //设置字体名字
+        contentWriteCellStyle.setWriteFont(contentWriteFont);//在样式用应用设置的字体;
+
+        //设置样式;
+        contentWriteCellStyle.setBorderBottom(THIN);//设置底边框;
+        contentWriteCellStyle.setBottomBorderColor((short) 0);//设置底边框颜色;
+        contentWriteCellStyle.setBorderLeft(THIN);  //设置左边框;
+        contentWriteCellStyle.setLeftBorderColor((short) 0);//设置左边框颜色;
+        contentWriteCellStyle.setBorderRight(THIN);//设置右边框;
+        contentWriteCellStyle.setRightBorderColor((short) 0);//设置右边框颜色;
+        contentWriteCellStyle.setBorderTop(THIN);//设置顶边框;
+        contentWriteCellStyle.setTopBorderColor((short) 0); ///设置顶边框颜色;
+
+        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 水平居中
+        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
+        contentWriteCellStyle.setWrapped(true); //设置自动换行;
+
+        contentWriteCellStyle.setDataFormat((short)49);//设置单元格格式是:文本格式,方式长数字文本科学计数法
+
+        contentWriteCellStyle.setShrinkToFit(true);//设置文本收缩至合适
+
+        return contentWriteCellStyle;
+    }
+}
+

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java

@@ -4,6 +4,9 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.util.CollectionUtils;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -16,6 +19,7 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.panel.vo.WebPanelResult;
 import com.xunmei.common.core.exception.ServiceException;
+import com.xunmei.common.core.utils.EasyExcelStyleUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
@@ -40,6 +44,9 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteUserService;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -52,6 +59,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import static org.apache.poi.ss.usermodel.BorderStyle.*;
+
 /**
  * 隐患问题清单Service业务层处理
  *
@@ -315,11 +324,13 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
         for (QuestionExportDto questionExportDto : list) {
             if(isOverdue(questionExportDto.getConfirmStatus(),questionExportDto.getReformStatus(),questionExportDto.getReformDeadline())){
                 questionExportDto.setConfirmStatusText("已逾期");
+                questionExportDto.setReformStatusText("已逾期");
             }
             questionExportDto.setIndex(index++);
         }
         response.setContentType("application/vnd.ms-excel");
         // 调用EasyExcel的导出方法
+//        EasyExcel.write(response.getOutputStream(), QuestionExportDto.class).registerWriteHandler(EasyExcelStyleUtils.buildHorizontalCellStyleStrategy()).sheet("Sheet1").doWrite(list);
         EasyExcel.write(response.getOutputStream(), QuestionExportDto.class).sheet("Sheet1").doWrite(list);
     }