工具类Util类的注释书写规范

package com.paic.pacz.core.salesmanage.util;

import java.util.List;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.CollectionUtils;

import com.paic.icore.fa.logging.Log;
import com.paic.pacz.core.salesmanage.dto.ExportExcelDTO;
import com.paic.pacz.core.salesmanage.dto.ExportExcelPropertyDTO;

public class ExportExcelUtil{ 
    /** 日志服务 */
    private Log log;
    
    /**
     * 创建sheet
     * @param xssfWorkbook 工作簿
     * @return
     */
    private XSSFSheet createSheet(XSSFWorkbook xssfWorkbook){
        XSSFSheet sheet=xssfWorkbook.createSheet();
        log.trace("XSSFSheet 创建成功");
        return sheet;
    }
    

    /**
     * 设置表头值
     * @param sheet
     * @param haeders
     * @throws Exception
     */
    private void setHaeder(XSSFSheet sheet,List<String> haeders){
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        XSSFRow haederRow = sheet.createRow(0);
        for(int i=0;i<haeders.size();i++){
            //创建表头的cell
            XSSFCell xssfCell=haederRow.createCell(i);
            //给表头的cell赋值
            xssfCell.setCellValue(haeders.get(i));
        }
        log.trace("Excel 表头信息设置成功");
    }
    /**
     * 给Excel添加数据
     * @param datas 数据对象集合
     * @param sheet 
     * @param cellSize 每row的cell数
     * @throws Exception
     */
    private void setExeclCellValue(List<ExportExcelPropertyDTO> datas,XSSFSheet sheet,Integer cellSize)throws Exception{
        //没有数据时终止生成数据
        if(CollectionUtils.isEmpty(datas))return;
        int rowIndex=1;//数据行从第1行开始,第0行为表头
        //循环给 每row的每cell赋值
        for(ExportExcelPropertyDTO exportExcelPropertyDTO:datas){
            XSSFRow dataRow=sheet.createRow(rowIndex);
            setCellVal(exportExcelPropertyDTO, dataRow, cellSize);
            rowIndex++;
        }
        //赋值完成 清空数据对象集合
        datas.clear();
        log.trace("Excel 数据添加成功");
    }

    /**
     * 设置cell的值
     * @param excelDTO 数据对象
     * @param dataRow excel的行
     * @param cellSize 每行的cell的数量
     * @throws Exception
     */
    private void setCellVal(ExportExcelPropertyDTO exportExcelPropertyDTO,XSSFRow dataRow,Integer cellSize)throws Exception{
        for(int i=0;i<cellSize;i++){
            //创建 cell
            XSSFCell cell=dataRow.createCell(i);
            //生成数据对象的属性(property)
            String property="porp"+i;
            //获取数据对象中对应属性(property)的值
            Object val=null;
            try{
                val=PropertyUtils.getProperty(exportExcelPropertyDTO, property);
            }catch(Exception e){
                log.error("获取属性::"+property+" 的值出错!Message:::"+e.getMessage(), e);
            }
            if(!CommonUtil.isNull(val)){//值不为空时,赋值
                if(val instanceof Double){
                    cell.setCellValue(Double.parseDouble(val.toString()));//统一转成String的数据
                }else{
                    cell.setCellValue(val.toString());//统一转成String的数据
                }
                
            }else{//值为空时,赋值""
                cell.setCellValue("");
            }
        }
        log.trace("每行设置值成功");
    }

    /**
     * 导出Excel文件
     * @param httpServletResponse
     * @param exportExcelDTO
     * @throws Exception
     */
    public void exportExcel(XSSFWorkbook workbook,ExportExcelDTO exportExcelDTO) throws Exception{
        //表头信息为空是终止导出数据
        if(CollectionUtils.isEmpty(exportExcelDTO.getHeaders()))return;
        //创建sheet
        XSSFSheet sheet=createSheet(workbook);
        //设置表头信息
        setHaeder(sheet, exportExcelDTO.getHeaders());
        //获取每一行row的cell的数量
        Integer cellSize=exportExcelDTO.getHeaders().size();
        //给row的cell赋值
        setExeclCellValue(exportExcelDTO.getExcelPropertyDTOs(), sheet,cellSize);
    }
    

    public Log getLog() {
        return log;
    }
    public void setLog(Log log) {
        this.log = log;
    }
    
}

 

posted @ 2017-02-15 18:31  跨境电商杂货铺  阅读(1946)  评论(0编辑  收藏  举报