package com.jeeplus.modules.sg.financial.settlement.util;


import com.jeeplus.common.utils.DateUtils;
import com.jeeplus.modules.sg.financial.settlement.entity.MaintainData;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

import java.io.File;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

/**
 *
 * Description: 生成Excel并写入数据
 */
public class ExcelWriter {

    public static Map<String, CellStyle> styles;

    /**
     * 生成Excel并写入数据信息
     * @param dataList 数据列表
     * @return 写入数据后的工作簿对象
     */
    public static Workbook exportData(List<MaintainData> dataList){
        // 生成xlsx的Excel
        Workbook workbook = new SXSSFWorkbook();


        // 生成Sheet表，写入第一行的列头
        Sheet sheet = buildDataSheet(workbook);
        //构建每行的数据内容
        int rowNum = 3;
        for (Iterator<MaintainData> it = dataList.iterator(); it.hasNext(); ) {
            MaintainData data = it.next();
            if (data == null) {
                continue;
            }
            //输出行数据
            Row row = sheet.createRow(rowNum++);
            convertDataToRow(data, row);
        }
        return workbook;
    }


    public static Workbook exportHeard(){
        // 生成xlsx的Excel
        Workbook workbook = new SXSSFWorkbook();
        // 生成Sheet表，写入第一行的列头
        Sheet sheet = buildHerd(workbook);
        List<MaintainData> dataList = new LinkedList<>();
        int rowNum = 3;
        for (Iterator<MaintainData> it = dataList.iterator(); it.hasNext(); ) {
            MaintainData data = it.next();
            if (data == null) {
                continue;
            }
            //输出行数据
            Row row = sheet.createRow(rowNum++);
            convertDataToRow(data, row);
        }
        return workbook;
    }

    /**
     * 生成sheet表，并写入第一行数据（列头）
     * @param workbook 工作簿对象
     * @return 已经写入列头的Sheet
     */
    private static Sheet buildDataSheet(Workbook workbook) {
        Sheet sheet = workbook.createSheet();
        // 设置列头宽度
//        for (int i=0; i<CELL_HEADS.size(); i++) {
//            sheet.setColumnWidth(i, 4000);
//        }
        // 设置默认行高
        sheet.setDefaultRowHeight((short) 400);
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 0, 0));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 1, 1));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 2, 2));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 3, 3));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 4, 4));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 5, 5));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 6, 6));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 7, 7));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 8, 8));
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 9, 19));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 9, 9));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 10, 10));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 11, 11));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 12, 12));
        sheet.addMergedRegion(new CellRangeAddress(1, 1, 13, 18));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 19, 19));
        // 构建头单元格样式
        styles = createStyles(sheet.getWorkbook());
        CellStyle cellStyle = buildHeadCellStyle(sheet.getWorkbook());



        // 写入第一行各列的数据
        Row row1 = sheet.createRow(0);
        Row row2 = sheet.createRow(1);
        Row row3 = sheet.createRow(2);
        Cell cell1 = row1.createCell(0);
        cell1.setCellValue("项目定义编码");
        cell1.setCellStyle(styles.get("header"));
        Cell cella1 = row1.createCell(1);
        cella1.setCellValue("设计单位");
        cella1.setCellStyle(styles.get("header"));
        Cell cellb1 = row1.createCell(2);
        cellb1.setCellValue("施工单位");
        cellb1.setCellStyle(styles.get("header"));
        Cell cellc1 = row1.createCell(3);
        cellc1.setCellValue("建筑地址");
        cellc1.setCellStyle(styles.get("header"));
        Cell celld1 = row1.createCell(4);
        celld1.setCellValue("建筑属性");
        celld1.setCellStyle(styles.get("header"));
        Cell celle1 = row1.createCell(5);
        celle1.setCellValue("发文总投资");
        celle1.setCellStyle(styles.get("header"));
        Cell cell2 = row1.createCell(6);
        cell2.setCellValue("开工时间");
        cell2.setCellStyle(styles.get("header"));
        Cell cell3 = row1.createCell(7);
        cell3.setCellValue("竣工时间");
        cell3.setCellStyle(styles.get("header"));
        Cell cell4 = row1.createCell(8);
        cell4.setCellValue("批准文号");
        cell4.setCellStyle(styles.get("header"));


        Cell cella = row2.createCell(0);
        cella.setCellValue("");
        cella.setCellStyle(styles.get("header"));
        Cell cella2 = row2.createCell(1);
        cella2.setCellValue("");
        cella2.setCellStyle(styles.get("header"));
        Cell cella3 = row2.createCell(2);
        cella3.setCellValue("");
        cella3.setCellStyle(styles.get("header"));
        Cell cella4 = row2.createCell(3);
        cella4.setCellValue("");
        cella4.setCellStyle(styles.get("header"));
        Cell cella5 = row2.createCell(4);
        cella5.setCellValue("");
        cella5.setCellStyle(styles.get("header"));
        Cell cella6 = row2.createCell(5);
        cella6.setCellValue("");
        cella6.setCellStyle(styles.get("header"));
        Cell cellb = row2.createCell(6);
        cellb.setCellValue("");
        cellb.setCellStyle(styles.get("header"));
        Cell cellc = row2.createCell(7);
        cellc.setCellValue("");
        cellc.setCellStyle(styles.get("header"));
        Cell celld = row2.createCell(8);
        celld.setCellValue("");
        celld.setCellStyle(styles.get("header"));

        Cell cellm = row2.createCell(14);
        cellm.setCellValue("");
        cellm.setCellStyle(styles.get("header"));
        Cell celln = row2.createCell(15);
        celln.setCellValue("");
        celln.setCellStyle(styles.get("header"));
        Cell cello = row2.createCell(16);
        cello.setCellValue("");
        cello.setCellStyle(styles.get("header"));
        Cell cellp = row2.createCell(17);
        cellp.setCellValue("");
        cellp.setCellStyle(styles.get("header"));
        Cell cellq = row2.createCell(18);
        cellq.setCellValue("");
        cellq.setCellStyle(styles.get("header"));

        Cell celle = row3.createCell(0);
        celle.setCellValue("");
        celle.setCellStyle(styles.get("header"));
        Cell celle6 = row3.createCell(1);
        celle6.setCellValue("");
        celle6.setCellStyle(styles.get("header"));
        Cell celle2 = row3.createCell(2);
        celle2.setCellValue("");
        celle2.setCellStyle(styles.get("header"));
        Cell celle3 = row3.createCell(3);
        celle3.setCellValue("");
        celle3.setCellStyle(styles.get("header"));
        Cell celle4 = row3.createCell(4);
        celle4.setCellValue("");
        celle4.setCellStyle(styles.get("header"));
        Cell celle5 = row3.createCell(5);
        celle5.setCellValue("");
        celle5.setCellStyle(styles.get("header"));
        Cell cellf = row3.createCell(6);
        cellf.setCellValue("");
        cellf.setCellStyle(styles.get("header"));
        Cell cellg = row3.createCell(7);
        cellg.setCellValue("");
        cellg.setCellStyle(styles.get("header"));
        Cell cellh = row3.createCell(8);
        cellh.setCellValue("");
        cellh.setCellStyle(styles.get("header"));

        Cell cell5 = row1.createCell(9);
        cell5.setCellValue("概算数");
        cell5.setCellStyle(styles.get("header"));
        Cell cell6 = row2.createCell(9);
        cell6.setCellValue("建筑费");
        cell6.setCellStyle(styles.get("header"));
        Cell cell7 = row2.createCell(10);
        cell7.setCellValue("安装费");
        cell7.setCellStyle(styles.get("header"));
        Cell cell8 = row2.createCell(11);
        cell8.setCellValue("设备购置费");
        cell8.setCellStyle(styles.get("header"));

        Cell cellj = row3.createCell(9);
        cellj.setCellValue("");
        cellj.setCellStyle(styles.get("header"));
        Cell cellk = row3.createCell(10);
        cellk.setCellValue("");
        cellk.setCellStyle(styles.get("header"));
        Cell celll = row3.createCell(11);
        celll.setCellValue("");
        celll.setCellStyle(styles.get("header"));
        Cell celll1 = row3.createCell(19);
        celll1.setCellValue("");
        celll1.setCellStyle(styles.get("header"));
        Cell celll11 = row1.createCell(19);
        celll11.setCellValue("");
        celll11.setCellStyle(styles.get("header"));

        Cell cell9 = row2.createCell(12);
        cell9.setCellValue("主材费");
        cell9.setCellStyle(styles.get("header"));
        Cell cell10 = row2.createCell(13);
        cell10.setCellValue("其他费用");
        cell10.setCellStyle(styles.get("header"));
        Cell cell101 = row2.createCell(19);
        cell101.setCellValue("合计");
        cell101.setCellStyle(styles.get("header"));
        Cell cell11 = row3.createCell(13);
        cell11.setCellValue("设计费");
        cell11.setCellStyle(styles.get("header"));
        Cell cell12 = row3.createCell(14);
        cell12.setCellValue("监理费");
        cell12.setCellStyle(styles.get("header"));
        Cell cell13 = row3.createCell(15);
        cell13.setCellValue("项目前期工作费");
        cell13.setCellStyle(styles.get("header"));
        Cell cell14 = row3.createCell(16);
        cell14.setCellValue("线路施工赔偿费");
        cell14.setCellStyle(styles.get("header"));
        Cell cell15 = row3.createCell(17);
        cell15.setCellValue("法人管理费（余物清理费）");
        cell15.setCellStyle(styles.get("header"));
        Cell cell16 = row3.createCell(18);
        cell16.setCellValue("小计");
        cell16.setCellStyle(styles.get("header"));
        return sheet;
    }

    /**
     * 设置第一行列头的样式
     * @param workbook 工作簿对象
     * @return 单元格样式对象
     */
    private static CellStyle buildHeadCellStyle(Workbook workbook) {
        CellStyle style = workbook.createCellStyle();
        //对齐方式设置
        style.setAlignment(CellStyle.ALIGN_CENTER);
        //边框颜色和宽度设置
//        style.setBorderBottom(CellStyle.THIN);
        style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // 下边框
        style.setBorderLeft(CellStyle.BORDER_THIN);
        style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); // 左边框
        style.setBorderRight(CellStyle.BORDER_THIN);
        style.setRightBorderColor(IndexedColors.BLACK.getIndex()); // 右边框
        style.setBorderTop(CellStyle.BORDER_THIN);
        style.setTopBorderColor(IndexedColors.BLACK.getIndex()); // 上边框
        //设置背景颜色
//        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
//        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        return style;
    }

    /**
     * 设置导出表格样式
     * @param wb
     * @return
     */
    private static Map<String, CellStyle> createStyles(Workbook wb) {
        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();

        CellStyle style = wb.createCellStyle();
        style.setAlignment(CellStyle.ALIGN_CENTER);
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        Font titleFont = wb.createFont();
        titleFont.setFontName("Arial");
        titleFont.setFontHeightInPoints((short) 16);
        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
        style.setFont(titleFont);
        styles.put("title", style);

        style = wb.createCellStyle();
        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
        style.setBorderRight(CellStyle.BORDER_THIN);
        style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderLeft(CellStyle.BORDER_THIN);
        style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderTop(CellStyle.BORDER_THIN);
        style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setBorderBottom(CellStyle.BORDER_THIN);
        style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        Font dataFont = wb.createFont();
        dataFont.setFontName("Arial");
        dataFont.setFontHeightInPoints((short) 10);
        style.setFont(dataFont);
        styles.put("data", style);

        style = wb.createCellStyle();
        style.cloneStyleFrom(styles.get("data"));
        style.setAlignment(CellStyle.ALIGN_LEFT);
        styles.put("data1", style);

        style = wb.createCellStyle();
        style.cloneStyleFrom(styles.get("data"));
        style.setAlignment(CellStyle.ALIGN_CENTER);
        styles.put("data2", style);

        style = wb.createCellStyle();
        style.cloneStyleFrom(styles.get("data"));
        style.setAlignment(CellStyle.ALIGN_RIGHT);
        styles.put("data3", style);

        style = wb.createCellStyle();
        style.cloneStyleFrom(styles.get("data"));
//		style.setWrapText(true);
        style.setAlignment(CellStyle.ALIGN_CENTER);
        style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
        Font headerFont = wb.createFont();
        headerFont.setFontName("Arial");
        headerFont.setFontHeightInPoints((short) 10);
        headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
        headerFont.setColor(IndexedColors.BLACK.getIndex());
        style.setFont(headerFont);
        style.setFillForegroundColor(HSSFColor.WHITE.index);
        styles.put("header", style);

        return styles;
    }

    /**
     * 将数据转换成行
     * @param row 行对象
     * @return
     */
    private static void convertDataToRow(MaintainData maintainData, Row row){
        int cellNum = 0;
        Cell cell;
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getProjectId()) {
            cell.setCellValue(maintainData.getProjectId());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getDesignUnits()) {
            cell.setCellValue(maintainData.getDesignUnits());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getConstructionUnits()) {
            cell.setCellValue(maintainData.getConstructionUnits());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getAddress()) {
            cell.setCellValue(maintainData.getAddress());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getProperty()) {
            cell.setCellValue(maintainData.getProperty());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getInvestment()) {
            cell.setCellValue(maintainData.getInvestment());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getStartDate()) {
            cell.setCellValue(DateUtils.formatDate(maintainData.getStartDate()));

        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getEndDate()) {
            cell.setCellValue(DateUtils.formatDate(maintainData.getEndDate()));
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getApprovalNumber()) {
            cell.setCellValue(maintainData.getApprovalNumber());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getBuildingFee()) {
            cell.setCellValue(maintainData.getBuildingFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getInstallFee()) {
            cell.setCellValue(maintainData.getInstallFee());
        } else {
            cell.setCellValue("");
        }

        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getEquipmentFee()) {
            cell.setCellValue(maintainData.getEquipmentFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getMaterialFee()) {
            cell.setCellValue(maintainData.getMaterialFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getDesignFee()) {
            cell.setCellValue(maintainData.getDesignFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getSupervisionFee()) {
            cell.setCellValue(maintainData.getSupervisionFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getPreliminaryWorkFee()) {
            cell.setCellValue(maintainData.getPreliminaryWorkFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getDamages()) {
            cell.setCellValue(maintainData.getDamages());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        if (null != maintainData.getManagementFee()) {
            cell.setCellValue(maintainData.getManagementFee());
        } else {
            cell.setCellValue("");
        }
        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        cell.setCellValue(maintainData.getDesignFee()+maintainData.getSupervisionFee()+maintainData.getPreliminaryWorkFee()
                              +maintainData.getDamages()+maintainData.getManagementFee());

        cell = row.createCell(cellNum++);
        cell.setCellStyle(styles.get("data"));
        cell.setCellValue(maintainData.getDesignFee()+maintainData.getSupervisionFee()+maintainData.getPreliminaryWorkFee()
                    +maintainData.getDamages()+maintainData.getManagementFee()+maintainData.getBuildingFee()+maintainData.getInstallFee()
                    +maintainData.getEquipmentFee()+maintainData.getMaterialFee());

    }

    private static Sheet buildHerd(Workbook workbook) {
        CellStyle style = workbook.createCellStyle();
        style.setBorderLeft(CellStyle.BORDER_THIN);
        style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
        Sheet sheet = workbook.createSheet();
        // 设置列头宽度
//        for (int i=0; i<CELL_HEADS.size(); i++) {
//            sheet.setColumnWidth(i, 4000);
//        }
        // 设置默认行高
        sheet.setDefaultRowHeight((short) 400);
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 0, 0));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 1, 1));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 2, 2));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 3, 3));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 4, 4));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 5, 5));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 6, 6));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 7, 7));
        sheet.addMergedRegion(new CellRangeAddress(2, 0, 8, 8));
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 9, 17));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 9, 9));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 10, 10));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 11, 11));
        sheet.addMergedRegion(new CellRangeAddress(2, 1, 12, 12));
        sheet.addMergedRegion(new CellRangeAddress(1, 1, 13, 17));
        // 构建头单元格样式
        styles = createStyles(sheet.getWorkbook());
        CellStyle cellStyle = buildHeadCellStyle(sheet.getWorkbook());



        // 写入第一行各列的数据
        Row row1 = sheet.createRow(0);
        Row row2 = sheet.createRow(1);
        Row row3 = sheet.createRow(2);
        Cell cell1 = row1.createCell(0);
        cell1.setCellValue("项目定义编码");
        cell1.setCellStyle(styles.get("header"));
        Cell cella1 = row1.createCell(1);
        cella1.setCellValue("设计单位");
        cella1.setCellStyle(styles.get("header"));
        Cell cellb1 = row1.createCell(2);
        cellb1.setCellValue("施工单位");
        cellb1.setCellStyle(styles.get("header"));
        Cell cellc1 = row1.createCell(3);
        cellc1.setCellValue("建筑地址");
        cellc1.setCellStyle(styles.get("header"));
        Cell celld1 = row1.createCell(4);
        celld1.setCellValue("建筑属性");
        celld1.setCellStyle(styles.get("header"));
        Cell celle1 = row1.createCell(5);
        celle1.setCellValue("发文总投资");
        celle1.setCellStyle(styles.get("header"));
        Cell cell2 = row1.createCell(6);
        cell2.setCellValue("开工时间");
        cell2.setCellStyle(styles.get("header"));
        Cell cell3 = row1.createCell(7);
        cell3.setCellValue("竣工时间");
        cell3.setCellStyle(styles.get("header"));
        Cell cell4 = row1.createCell(8);
        cell4.setCellValue("批准文号");
        cell4.setCellStyle(styles.get("header"));


        Cell cella = row2.createCell(0);
        cella.setCellValue("");
        cella.setCellStyle(styles.get("header"));
        Cell cella2 = row2.createCell(1);
        cella2.setCellValue("");
        cella2.setCellStyle(styles.get("header"));
        Cell cella3 = row2.createCell(2);
        cella3.setCellValue("");
        cella3.setCellStyle(styles.get("header"));
        Cell cella4 = row2.createCell(3);
        cella4.setCellValue("");
        cella4.setCellStyle(styles.get("header"));
        Cell cella5 = row2.createCell(4);
        cella5.setCellValue("");
        cella5.setCellStyle(styles.get("header"));
        Cell cella6 = row2.createCell(5);
        cella6.setCellValue("");
        cella6.setCellStyle(styles.get("header"));
        Cell cellb = row2.createCell(6);
        cellb.setCellValue("");
        cellb.setCellStyle(styles.get("header"));
        Cell cellc = row2.createCell(7);
        cellc.setCellValue("");
        cellc.setCellStyle(styles.get("header"));
        Cell celld = row2.createCell(8);
        celld.setCellValue("");
        celld.setCellStyle(styles.get("header"));

        Cell cellm = row2.createCell(14);
        cellm.setCellValue("");
        cellm.setCellStyle(styles.get("header"));
        Cell celln = row2.createCell(15);
        celln.setCellValue("");
        celln.setCellStyle(styles.get("header"));
        Cell cello = row2.createCell(16);
        cello.setCellValue("");
        cello.setCellStyle(styles.get("header"));
        Cell cellp = row2.createCell(17);
        cellp.setCellValue("");
        cellp.setCellStyle(styles.get("header"));
        Cell cellq = row1.createCell(17);
        cellq.setCellValue("");
        cellq.setCellStyle(styles.get("header"));

        Cell celle = row3.createCell(0);
        celle.setCellValue("");
        celle.setCellStyle(styles.get("header"));
        Cell celle6 = row3.createCell(1);
        celle6.setCellValue("");
        celle6.setCellStyle(styles.get("header"));
        Cell celle2 = row3.createCell(2);
        celle2.setCellValue("");
        celle2.setCellStyle(styles.get("header"));
        Cell celle3 = row3.createCell(3);
        celle3.setCellValue("");
        celle3.setCellStyle(styles.get("header"));
        Cell celle4 = row3.createCell(4);
        celle4.setCellValue("");
        celle4.setCellStyle(styles.get("header"));
        Cell celle5 = row3.createCell(5);
        celle5.setCellValue("");
        celle5.setCellStyle(styles.get("header"));
        Cell cellf = row3.createCell(6);
        cellf.setCellValue("");
        cellf.setCellStyle(styles.get("header"));
        Cell cellg = row3.createCell(7);
        cellg.setCellValue("");
        cellg.setCellStyle(styles.get("header"));
        Cell cellh = row3.createCell(8);
        cellh.setCellValue("");
        cellh.setCellStyle(styles.get("header"));

        Cell cell5 = row1.createCell(9);
        cell5.setCellValue("概算数");
        cell5.setCellStyle(styles.get("header"));
        Cell cell6 = row2.createCell(9);
        cell6.setCellValue("建筑费");
        cell6.setCellStyle(styles.get("header"));
        Cell cell7 = row2.createCell(10);
        cell7.setCellValue("安装费");
        cell7.setCellStyle(styles.get("header"));
        Cell cell8 = row2.createCell(11);
        cell8.setCellValue("设备购置费");
        cell8.setCellStyle(styles.get("header"));

        Cell cellj = row3.createCell(9);
        cellj.setCellValue("");
        cellj.setCellStyle(styles.get("header"));
        Cell cellk = row3.createCell(10);
        cellk.setCellValue("");
        cellk.setCellStyle(styles.get("header"));
        Cell celll = row3.createCell(11);
        celll.setCellValue("");
        celll.setCellStyle(styles.get("header"));
        Cell celll1 = row3.createCell(12);
        celll1.setCellValue("");
        celll1.setCellStyle(styles.get("header"));


        Cell cell9 = row2.createCell(12);
        cell9.setCellValue("主材费");
        cell9.setCellStyle(styles.get("header"));
        Cell cell10 = row2.createCell(13);
        cell10.setCellValue("其他费用");
        cell10.setCellStyle(styles.get("header"));
        Cell cell11 = row3.createCell(13);
        cell11.setCellValue("设计费");
        cell11.setCellStyle(styles.get("header"));
        Cell cell12 = row3.createCell(14);
        cell12.setCellValue("监理费");
        cell12.setCellStyle(styles.get("header"));
        Cell cell13 = row3.createCell(15);
        cell13.setCellValue("项目前期工作费");
        cell13.setCellStyle(styles.get("header"));
        Cell cell14 = row3.createCell(16);
        cell14.setCellValue("线路施工赔偿费");
        cell14.setCellStyle(styles.get("header"));
        Cell cell15 = row3.createCell(17);
        cell15.setCellValue("法人管理费（余物清理费）");
        cell15.setCellStyle(styles.get("header"));
        return sheet;
    }


    public static Workbook export(List<MaintainData> dataList){
        // 生成xlsx的Excel
        Workbook workbook = new SXSSFWorkbook();
        // 生成Sheet表，写入第一行的列头
        Sheet sheet = buildDataSheet(workbook);
        //构建每行的数据内容
        int rowNum = 3;
        for (Iterator<MaintainData> it = dataList.iterator(); it.hasNext(); ) {
            MaintainData data = it.next();
            if (data == null) {
                continue;
            }
            //输出行数据
            Row row = sheet.createRow(rowNum++);
            convertDataToRow(data, row);
        }
        return workbook;
    }

    public  String getSispPath() {
        String sispPath = this.getClass().getResource("/").getPath()+ "freemarker/";
        return sispPath;
    }

}

