jiangping
2024-01-30 a9ca0823ab8f33ca85abebcf6ec4a8da235adb49
server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -17,6 +17,7 @@
import org.springframework.core.annotation.AnnotationConfigurationException;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -251,7 +252,24 @@
        }
        return new ArrayList<>(sortedFields.values());
    }
    /**
     * 配置数据单元格
     */
    private void configDataCell (SXSSFWorkbook workbook, Cell cell ) {
        CellStyle style = workbook.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置背景
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
        // 字体
        Font font = workbook.createFont();
        style.setFont(font);
        // 边框
        configCellBorder(style);
        style.setWrapText(true);
        cell.setCellStyle(style);
    }
    /**
     * 配置数据单元格
     */
@@ -309,7 +327,7 @@
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置背景
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
//        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        // 字体
        Font font = workbook.createFont();
        font.setFontHeightInPoints((short)12);
@@ -317,6 +335,22 @@
        style.setFont(font);
        // 设置边框
        configCellBorder(style);
        cell.setCellStyle(style);
    }
    private void configTitleCell (SXSSFWorkbook workbook, Cell cell ) {
        CellStyle style = workbook.createCellStyle();
        style.setAlignment(HorizontalAlignment.CENTER);
        style.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置背景
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        // 字体
        Font font = workbook.createFont();
        font.setFontHeightInPoints((short)12);
        font.setBold(true);
        style.setFont(font);
        // 设置边框
        configCellBorder(style);
//        configCellBorder(style);
        cell.setCellStyle(style);
    }
    /**
@@ -444,14 +478,19 @@
        try {
            sxssfWorkbook = new SXSSFWorkbook();
            Sheet sheet = sxssfWorkbook.createSheet(sheetName);
            for (int i = 0; i < 6; i++) {
                sheet.setColumnWidth(i, (i==5?20:15) * 2 * 256);
            }
            sheet.createFreezePane(0, 1);
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,6));
            Row title = sheet.createRow(0);
            title.setHeight((short) 1000);
            Cell c = title.createCell(0);
            c.setCellValue(sheetName);
            configFirstCell(sxssfWorkbook,c);
            title.setHeight((short) 800);
            for (int i = 0; i < 6; i++) {
                title.createCell(i).setCellValue(i==0?sheetName:"");
                configTitleCell(sxssfWorkbook,title.getCell(i));
            }
            sheet.addMergedRegion(new CellRangeAddress(0   ,0,0,5));
            Row header1 = sheet.createRow(1);
            header1.setHeight((short) 500);
            header1.createCell(0).setCellValue("投保企业");
            header1.createCell(1).setCellValue("保险方案");
            header1.createCell(2).setCellValue("保险生效起期");
@@ -468,17 +507,17 @@
            header2.createCell(3).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
            header2.createCell(4).setCellValue(data.getInsureNum());
            header2.createCell(5).setCellValue(Constants.formatBigdecimal2Float(data.getFee()).toString());
            //空白行
            Row header3 = sheet.createRow(3);
            sheet.addMergedRegion(new CellRangeAddress(3  ,3,0,6));
            Row header4 = sheet.createRow(4);
            for (int i = 0; i < 6; i++) {
                configDataCell(sxssfWorkbook,   header2.getCell(i));
            }
            Row header4 = sheet.createRow(3);
            header4.createCell(0).setCellValue("序号");
            header4.createCell(1).setCellValue("员工姓名");
            header4.createCell(2).setCellValue("性别");
            header4.createCell(3).setCellValue("身份证号");
            header4.createCell(4).setCellValue("派遣单位");
            header4.createCell(5).setCellValue("所属工种");
            header4.setHeight((short) 500);
            for (int i = 0; i < 6; i++) {
                configFirstCell(sxssfWorkbook,header4.getCell(i));
            }
@@ -487,12 +526,17 @@
                for (int rowIndex = 0; rowIndex < data.getApplyDetailList().size(); rowIndex++) {
                    ApplyDetail d = data.getApplyDetailList().get(rowIndex);
                    Row header5 = sheet.createRow(rowIndex + 4);
//                    header5.setHeight((short) 300);
                    header5.createCell(0).setCellValue(rowIndex+1);
                    header5.createCell(1).setCellValue(StringUtils.defaultString(d.getMemberName(),""));
                    header5.createCell(2).setCellValue(Constants.equalsInteger(d.getSex(),0)?"男":(Constants.equalsInteger(d.getSex(),1)?"女":"-"));
                    header5.createCell(3).setCellValue(StringUtils.defaultString(d.getIdcardNo(),""));
                    header5.createCell(4).setCellValue(StringUtils.defaultString(d.getDuName(),""));
                    header5.createCell(5).setCellValue(StringUtils.defaultString(d.getWorkTypeName(),""));
                    // 设置数据单元格
                    for (int i = 0; i < 6; i++) {
                        configDataCell(sxssfWorkbook,   header5.getCell(i));
                    }
                }
            }
            sxssfWorkbook.write(os);