package com.gome.budget.common.utils;

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

public class ExcelExportUtil {

    public static void main(String[] args) throws FileNotFoundException {

        List<List<String>> header = createTestListStringHead();
        List<List<Object>> dataLists = createTestListObject();

        OutputStream os = new FileOutputStream("D:\\share\\expense.xlsx");
        ExcelExportUtil exporter = new ExcelExportUtil();
        exporter.initWriter(os);
        exporter.createSheet(1, 0, "损益表2", header)
                .writeDatas(dataLists);

        exporter.createSheet(2, 0, "费用表2", header)
                .writeDatas(dataLists);

        exporter.close();
    }

    public ExcelExportUtil() {
    }
    public static List<List<String>> createTestListStringHead() {
        List<List<String>> header = new ArrayList<List<String>>();
        List<String> headList = new ArrayList<String>();
        headList.add("预算组织");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("项目");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("前2个考核期实际数");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("前1个考核期发生月实际数");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("前1个考核期未发生月预测数");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("前1个考核期预测数");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("当前考核期上报数");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("同比");
        header.add(headList);

        headList = new ArrayList<String>();
        headList.add("环比");
        header.add(headList);

        return header;
    }
    public static List<List<Object>> createTestListObject() {
        List<List<Object>> dataList = new ArrayList<List<Object>>();
        List<Object> data = new ArrayList<Object>();
        data.add("电器集团");
        data.add("一、销售净额");
        data.add("33977039584.3376");
        data.add("21934607354.7551");
        data.add("13185382748.9218");
        data.add("35119990103.6769");
        data.add("37225695903.0281");
        data.add("6.00%");
        data.add("9.56%");
        dataList.add(data);

        data = new ArrayList<Object>();
        data.add("电器集团");
        data.add("减:销售折扣");
        data.add("-1058035879.32");
        data.add("2410985173.15");
        data.add("59573049.4876506");
        data.add("2470558222.63765");
        data.add("181020526.822908");
        data.add("-92.67%");
        data.add("117.11%");
        dataList.add(data);


        return dataList;
    }

    private ExcelWriter writer;
    private List<Sheet> sheets = new ArrayList<Sheet>();

    /**
     * 初始化writer
     * @param os
     */
    public ExcelExportUtil initWriter(OutputStream os) {
        writer = EasyExcelFactory.getWriter(os);

        return this;
    }

    public ExcelExportUtil createSheet(int sheetNo, int headLineMun, String sheetName, List<List<String>> header) {
        Sheet sheet1 = new Sheet(sheetNo, headLineMun);
        sheet1.setSheetName(sheetName);
        sheet1.setHead(header);
        sheet1.setAutoWidth(Boolean.TRUE);


        this.sheets.add(sheet1);

        return this;
    }

    /**
     * 关闭资源
     */
    public void close() {
        writer.finish();
    }

    public ExcelExportUtil writeDatas(List<List<Object>> dataLists) {
        //写第一个sheet, sheet1  数据全是List<String> 无模型映射关系
        for (Sheet sheet :
                sheets) {
            writer.write1(dataLists, sheet);
        }

        return this;
    }

    public ExcelWriter getWriter() {
        return writer;
    }

    public void setWriter(ExcelWriter writer) {
        this.writer = writer;
    }

    public List<Sheet> getSheets() {
        return sheets;
    }

    public void setSheets(List<Sheet> sheets) {
        this.sheets = sheets;
    }
}

 

posted on 2019-06-18 20:54  王洪洪  阅读(193)  评论(0编辑  收藏  举报