美文网首页
JavaBean写入excel

JavaBean写入excel

作者: 夜空最亮的9星 | 来源:发表于2018-09-04 11:38 被阅读41次

import com.entity.EtlMoniterLog;
import com.entity.ListUtills;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;

@Service
public class PoiUtills {
    
    public static String[] namelist = {"日志ID",
            "数据源名称",
            "任务编号",
            "任务名称",
            "处理数据的来源",
            "处理数据的目标",
            "开始时间",
            "结束时间",
            "成功(合规)件数",
            "失败(不合规)件数",
            "业务处理时间",
            "执行时间(etl_date)"
    };

    private static Map<String, String> keyMap = new LinkedHashMap<>();

    static {
        keyMap.put("member", "AccountPF_member");
        keyMap.put("product", "Product");
        keyMap.put("store", "Store");
        keyMap.put("channel", "Channel");
        keyMap.put("dim", "Time");
        keyMap.put("epay", "Epayment");
        keyMap.put("newepay", "Epayment_newepay");
        keyMap.put("pos", "POS");
        keyMap.put("app", "Mobile_APP");
        keyMap.put("tmall", "Tmall");
        keyMap.put("wifi", "Free_Wifi");
        keyMap.put("other", "Other");

    }



    public void createWorkBook(List<EtlMoniterLog> dateList,Class<?> clazz,String bookName) throws Exception{

        XSSFWorkbook workbook = new XSSFWorkbook();
        <!--安装属性字段分组-->
        Map<String, List<EtlMoniterLog>> listMap = ListUtills.splitAndGroup(dateList);
        Iterator<String> iter = keyMap.keySet().iterator();

        while (iter.hasNext()){
            String key = iter.next();
            String shetName = keyMap.get(key);
            List<EtlMoniterLog> bxlist = listMap.get(key);
            System.out.println("key ---> "+key+",value --->"+ bxlist);
            if (bxlist!= null && bxlist.size()>0){
                Collections.sort(bxlist);
                createSheetWithList(workbook,shetName,bxlist,EtlMoniterLog.class);
            }
        }

        String fileName = initOutputDir() + File.separator +bookName+".xlsx";

        OutputStream fileOut = new FileOutputStream(fileName);

        workbook.write(fileOut);

        workbook.close();

    }


    private void createSheetWithList(XSSFWorkbook workbook,String sheetName,List<EtlMoniterLog> list,Class<?> clazz) throws Exception{

        XSSFSheet sheet = workbook.createSheet(sheetName);

        XSSFRow row = sheet.createRow(0);//创建一个行
//        设置行高
        row.setHeightInPoints(30);

        CellStyle cellStyle = workbook.createCellStyle();
//      // 水平居中
        cellStyle.setAlignment(HorizontalAlignment.CENTER);
////    // 垂直居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

        for (int i =0 ;i < namelist.length;i++){
            sheet.autoSizeColumn(i,true);
            XSSFCell cell = row.createCell(i);
            cell.setCellValue(namelist[i]);
            cell.setCellStyle(cellStyle);
        }

        Field[] fields = clazz.getDeclaredFields();

        for (int i = 0; i < list.size(); i++) {

            EtlMoniterLog moniterLog = list.get(i);

            XSSFRow row2 = sheet.createRow( i+ 1);
            row2.setHeightInPoints(15);
            for (int j=0;j < fields.length;j++){
                XSSFCell cell = row2.createCell(j);
                sheet.autoSizeColumn(i,true);
                String name = fields[j].getName();
                // 将属性的首字符大写,方便构造get,set方法
                name = name.substring(0, 1).toUpperCase() + name.substring(1);

                if (!name.equals("type")){
                    Method m = clazz.getMethod("get" + name);
                    // 调用getter方法获取属性值
                    String value = (String) m.invoke(moniterLog);
//                    System.out.println("属性值为:"+value);
                    if (value != null) {
                        cell.setCellValue(value);
                    } else {
                        cell.setCellValue("");
                    }
                }
            }
        }
    }


    public String initOutputDir(){

        String currentDir = System.getProperty("user.dir");

        File outputdir = new File(currentDir +File.separator + "output");

        System.out.println("outputdir --- >> "+outputdir);

        if (!outputdir.exists()) {
            outputdir.mkdirs();
        }
        return outputdir.getPath();
    }
}

相关文章

网友评论

      本文标题:JavaBean写入excel

      本文链接:https://www.haomeiwen.com/subject/omrgwftx.html