1首先引入接口类

package com.hailian.util;

import javax.servlet.http.HttpServletResponse;

/**
 * 将数据导出到excel接口定义
 * @author WangXuzheng
 *
 */
public interface ExcelExportTemplate<T> {
    /**
     * 将数据导出为excel
     * @param outputStream 文件输出流
     * @param parameters 参数
     */
    public void doExport(HttpServletResponse response,String fileName)throws Exception;
    /**
     * 要创建的excel文件的sheet名称
     * @return
     */
    public String[] getSheetNames();
    
    /**
     * 要创建的excel表格中的表头内容.
     * list中存放的是多个sheet的表头内容
     * @return
     */
    public String[][] getTitles();
    
    /**
     * 要创建的excel表格的每个sheet的表头
     * @return
     */
    public String[] getCaptions();
    
    /**
     * 控制文件在内存中最多占用多少条
     * @return
     */
    public int getRowAccessWindowSize();
}

2表格导出的实现类

package  com.hailian.util;

import java.io.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author WangXuzheng
 *
 */
public abstract class SettlrExcelExportTemplate<T> implements ExcelExportTemplate<T> {
    Logger logger=LoggerFactory.getLogger(SettlrExcelExportTemplate.class);
    /**
     * 默认表格宽度
     */
    private static final int DEFAULT_COLUMN_WIDTH = 5000;
    /**
     * excel文件对象
     */
    protected Workbook  workbook;
    /**
     * excel sheet列表
     */
    protected List<Sheet> sheets = new ArrayList<Sheet>();
    /**
     * 标题栏
     */
    protected String[][] titles;
    protected CellStyle captionRowSytle;
    /**
     * 默认标题行样式
     */
    protected CellStyle titleRowStyle;
    /**
     * 默认内容行样式
     */
    protected CellStyle bodyRowStyle;
    /**
     * 各个sheet是否包含抬头,key:sheet坐标,value:包含true,否则false
     */
    protected Map<Integer, Boolean> hasCaptionMap = new HashMap<Integer, Boolean>();
    /**
     * 默认单元格宽度
     */
    protected int columnWidth = DEFAULT_COLUMN_WIDTH;
    /**
     * 参数列表
     */
    protected T parameters;

    /* (non-Javadoc)
     * @see com.haier.openplatform.excel.ExcelExportService#doExport(java.io.OutputStream)
     */
    @Override
    public void doExport(HttpServletResponse response,String fileName) throws IOException {
         String[] sheetNames = this.getSheetNames();
        Validate.notEmpty(sheetNames);
        this.workbook = new SXSSFWorkbook(getRowAccessWindowSize());
        this.titles = this.getTitles();
        this.captionRowSytle = crateCaptionCellStyle();
        this.titleRowStyle = crateTitleCellStyle();
        this.bodyRowStyle = crateBodyCellStyle();
        this.afterCreateWorkBook();
        
        for (int i = 0; i < sheetNames.length; i++) {
            Sheet sheet = workbook.createSheet(sheetNames[i]);
            this.sheets.add(sheet);
            afterBuildSheet(i);
            buildCaption(i);
            buildTitle(i);
            afterBuildTitle(i);
            buildBody(i);
            afterBuildBody(i);
        }
        response.setContentType("application/vnd.ms-excel");     
        response.setHeader("Content-disposition", "attachment;filename=" + fileName);     
        OutputStream ouputStream = response.getOutputStream();     
        workbook.write(ouputStream);     
        ouputStream.flush();     
        //workbook.close();
        ouputStream.close(); 
        
    }

    /**
     * 下载excel到指定目录
     * @throws IOException
     */
    public void downloadExcel(String path) throws IOException{
        File file = new File(path);
        String[] sheetNames = this.getSheetNames();
        Validate.notEmpty(sheetNames);
        this.workbook = new SXSSFWorkbook(getRowAccessWindowSize());
        this.titles = this.getTitles();
        this.captionRowSytle = crateCaptionCellStyle();
        this.titleRowStyle = crateTitleCellStyle();
        this.bodyRowStyle = crateBodyCellStyle();
        this.afterCreateWorkBook();
        for (int i = 0; i < sheetNames.length; i++) {
            Sheet sheet = workbook.createSheet(sheetNames[i]);
            this.sheets.add(sheet);
            afterBuildSheet(i);
            buildCaption(i);
            buildTitle(i);
            afterBuildTitle(i);
            buildBody(i);
            afterBuildBody(i);
        }
        BufferedOutputStream ouputStream = new BufferedOutputStream(new FileOutputStream(file));
        workbook.write(ouputStream);
        ouputStream.flush();
        ouputStream.close();
    }

    /**
     * 创建单元格
     * @param row
     * @param index
     * @param cellValue
     * @param cellStyle
     */
    protected void createStyledCell(Row row,int index,String cellValue,CellStyle cellStyle){
        Cell cell = row.createCell(index);
        cell.setCellValue(cellValue==null?"":cellValue);
        cell.setCellStyle(cellStyle);
    }
    /**
     * 创建单元格(数字类型)
     * @param row
     * @param index
     * @param cellValue
     * @param cellStyle
     * @throws Exception 
     */
    protected <E extends Number> void createNumStyledCell(Row row,int index,E cellValue,CellStyle cellStyle){
        Cell cell = row.createCell(index);
        cell.setCellValue(numParseDouble(cellValue));
        cell.setCellStyle(cellStyle);
    }
    /**
     * 数字类型转double
     * @param e
     * @return
     */
    private  <E extends Number> Double numParseDouble(E e){
        double value=0;
        if(e!=null){
            Method m;
            try {
                m = e.getClass().getMethod("doubleValue");
                value=(Double)m.invoke(e);
            } catch (Exception e1) {
                logger.error(e1.getMessage(),e1);
            }
        }
        return value;
    }
    /**
     * 创建单元格
     * @param row
     * @param index
     * @param cellValue
     * @param cellStyle
     */
    protected void createStyledCell(Row row,int index,Double cellValue,CellStyle cellStyle){
        Cell cell = row.createCell(index);
        if(cellValue==null){
            cell.setCellValue("");
        }else{
            cell.setCellValue(cellValue);
        }
        cell.setCellStyle(cellStyle);
    }
    
    /**
     * 创建Integer单元格
     * @param row
     * @param index
     * @param cellValue
     * @param cellStyle
     */
    protected void createStyledCell(Row row,int index,Integer cellValue,CellStyle cellStyle){
        Cell cell = row.createCell(index);
        if(cellValue==null){
            cell.setCellValue("");
        }else{
            cell.setCellValue(cellValue);
        }
        cell.setCellStyle(cellStyle);
    }    
    /**
     * @description 创建double类型单元格
     * @author lau
     * @version 2016-7-13上午11:36:06
     * @param
     */
    protected void createStyledCell(Row row,int index,Long cellValue,CellStyle cellStyle){
        Cell cell = row.createCell(index);
        if(cellValue==null){
            cell.setCellValue("");
        }else{
            cell.setCellValue(cellValue);
        }
        cell.setCellStyle(cellStyle);
    }
    
    /**
     * 在创建完毕HSSFWorkBook对象和样式对象后作的处理操作,通常用来对默认的样式进行重新定义
     */
    protected void afterCreateWorkBook(){
    }
    /**
     * 获取excel抬头样式
     * @return
     */
    protected CellStyle crateCaptionCellStyle() {
        Font font = workbook.createFont();
        font.setColor(Font.COLOR_NORMAL);
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(false);
        font.setFontHeight((short)250);
        cellStyle.setFont(font);
        cellStyle.setFillForegroundColor(IndexedColors.BLUE_GREY.index);
        cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
        return cellStyle;
    }
    
    /**
     * 获取excel表头样式
     * @return
     */
    protected CellStyle crateTitleCellStyle() {
        Font font = workbook.createFont();
        font.setFontHeightInPoints((short) 9);// 字体大小
        font.setColor(HSSFColor.WHITE.index);// 字体颜色
        font.setFontName("微软雅黑");
//        font.setColor(Font.COLOR_NORMAL);
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(false);
        font.setFontHeight((short)250);
        cellStyle.setFont(font);
        cellStyle.setFillForegroundColor(HSSFColor.ROYAL_BLUE.index);
        cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        short border = 1;
        setCellBorder(cellStyle,border,border,border,border);
        cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        return cellStyle;
    }
    
    /**
     * 设置单元格的border
     * @param cellStyle
     * @param top
     * @param bottom
     * @param left
     * @param right
     */
    protected void setCellBorder(CellStyle cellStyle,short top,short bottom,short left,short right){
        cellStyle.setBorderBottom(bottom);
        cellStyle.setBorderLeft(left);
        cellStyle.setBorderRight(right);
        cellStyle.setBorderTop(top);
    }
    
    /**
     * 获取excel内容样式
     * @return
     */
    protected CellStyle crateBodyCellStyle() {
        Font font = workbook.createFont();
        //font.setColor(HSSFColor.BLUE_GREY.index);
        font.setFontHeightInPoints((short) 9);// 字体大小
        font.setColor(HSSFColor.BLACK.index);// 字体颜色
        font.setFontName("微软雅黑");
        
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setWrapText(false);
        cellStyle.setFont(font);
        cellStyle.setFillForegroundColor(HSSFColor.WHITE.index);
        cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
        cellStyle.setAlignment(CellStyle.ALIGN_LEFT);
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        short border = 1;
        setCellBorder(cellStyle,border,border,border,border);
        return cellStyle;
    }

    /**
     * 获取第n个excel sheet
     * @param sheetIndex
     * @return
     */
    protected Sheet getSheet(int sheetIndex) {
        return this.sheets.get(sheetIndex);
    }

    /**
     * 创建sheet完毕后做的操作
     * @param sheetIndex
     */
    protected void afterBuildSheet(int sheetIndex) {
    }
    
    /**
     * 在sheet的第一行插入标题
     * @param sheetIndex
     */
    protected void buildCaption(int sheetIndex){
        Sheet sheet = getSheet(sheetIndex);
        String[] captions = this.getCaptions(); 
        hasCaptionMap.put(sheetIndex, false);
        if(captions != null && captions.length >=sheetIndex +1){
            String caption = captions[sheetIndex];
            if(StringUtils.isNotBlank(caption)){
                Row row = sheet.createRow(0);
                int lastColumn = calculateLastColumn(sheetIndex);
                CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, lastColumn);
                sheet.addMergedRegion(cellRangeAddress);
                createStyledCell(row, 0, caption, this.captionRowSytle);
                hasCaptionMap.put(sheetIndex, true);
            }
        }
    }
    
    /**
     * 计算最后一列数据数据的
     * @param sheetIndex
     * @return
     */
    protected int calculateLastColumn(int sheetIndex){
        if(this.titles != null && sheetIndex <= this.titles.length -1 && this.titles[sheetIndex] != null){
            return this.titles[sheetIndex].length - 1;
        }else{
            return 1;
        }
    }

    /**
     * 创建sheet中数据的标题
     * @param sheetIndex
     */
    protected void buildTitle(int sheetIndex){
        // TODO Auto-generated method stub
        if(this.titles.length < sheetIndex + 1){
            return;
        }
        String[] ts = this.titles[sheetIndex];
        if(ts == null){
            return;
        }
        //表头样式创建
        titleRowStyle=crateTitleCellStyle();
        //表头数填充
        Sheet sheet=this.getSheet(sheetIndex);
        int titleStartRow=this.getTitleStartIndex(sheetIndex);
        for(int i=titleStartRow;i<this.titles.length+titleStartRow;i++){
            Row title=sheet.createRow(i);
            for(int j=0;j<this.titles[i].length;j++){
                sheet.setColumnWidth(j, columnWidth);
                createStyledCell(title, j, this.titles[i][j], titleRowStyle);
            }
        }
    }
    
    /**
     * 获取各个sheet内容部分起始行index,默认为从第一行开始
     * @param sheetIndex sheet的index
     * @return
     */
    protected int getBodyStartIndex(int sheetIndex){
        int captionRow = getTitleStartIndex(sheetIndex);;
        int titleRow = 0;
        if(this.titles != null && this.titles.length >= sheetIndex + 1){
            if(titles[sheetIndex] != null && titles[sheetIndex].length >0){
                titleRow = 1;
            }
        }
        return captionRow + titleRow;
    }
    
    /**
     * 获取各个sheet内容部分起始行index,默认为从第一行开始,支持三行以上动态表头
     * @param sheetIndex sheet的index
     * @return
     */
    protected int getBodyStartIndex1(int sheetIndex){
        int captionRow = getTitleStartIndex(sheetIndex);;
        int titleRow = 0;
        if(this.titles != null && this.titles.length >= sheetIndex + 1){
            if(titles[sheetIndex] != null && titles.length >0){
                titleRow = titles.length;
            }
        }
        return captionRow + titleRow;
    }

    protected int getTitleStartIndex(int sheetIndex){
        return this.hasCaptionMap.get(sheetIndex) ? 1 : 0;
    }
    /**
     * 创建sheet中数据的标题之后做的操作
     * @param sheetIndex
     */
    protected void afterBuildTitle(int sheetIndex) {
    }

    /**
     * 创建sheet中数据的内容
     * @param sheetIndex
     */
    protected abstract void buildBody(int sheetIndex);

    /**
     * 创建sheet中数据的内容之后做的操作
     * @param sheetIndex
     */
    protected void afterBuildBody(int sheetIndex) {
    }

    @Override
    public String[] getCaptions() {
        return new String[]{};
    }

    @Override
    public int getRowAccessWindowSize() {
        return 200;
    }
}

 

3针对list设置表头,前两个类可以直接引入。这个类需要针对自己情况做设置

package com.hailian.util;

import com.hailian.modules.admin.ordermanager.model.CreditOrderInfo;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.ss.usermodel.*;

import java.util.ArrayList;
import java.util.List;



public class SettleExport extends SettlrExcelExportTemplate {
    
private List<CreditOrderInfo> list = new ArrayList<CreditOrderInfo>();
    
    public SettleExport(List<CreditOrderInfo> list) {
        super();
        this.list = list;
    }

    @Override
    public String[] getSheetNames() {
        return new String[] { "订单结算" };
    }

    @Override
    public String[][] getTitles() {
        return new String[][] { 
                {"订单号","报告价格","报告价格单位","代理价格","报告价格单位","订单日期","到期日期","客户代码","订单公司名称","公司中文名称"},
        };
    }

    @Override
    public String[] getCaptions() {
        return null;
    }

    @Override
    protected void buildBody(int sheetIndex) {
        
        bodyRowStyle=crateBodyCellStyle();
        bodyRowStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        CellStyle bodyLeftStyle=crateBodyCellStyle();
        CellStyle bodyRightStyle=crateBodyCellStyle();
        bodyRightStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        bodyLeftStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        bodyRightStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
        
        CellStyle bodyCenterStyle=crateBodyCellStyle();
        bodyCenterStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        
        // 设置为文本格式,防止身份证号变成科学计数法  
        DataFormat format = workbook.createDataFormat();  
        bodyLeftStyle.setDataFormat(format.getFormat("@"));  
        
        Sheet sheet = getSheet(sheetIndex);
        int startIndex = this.getBodyStartIndex(sheetIndex);
//        SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期

        for (int i = 0; i < list.size(); i++) {
            int index = 0;
            Row row1 = sheet.createRow(i + startIndex );
            Cell cell1 = row1.createCell((short) 1);  
            cell1.setCellStyle(bodyLeftStyle);
            row1.setHeight((short) 300);
        CreditOrderInfo searchIndex = list.get(i);
            createStyledCell(row1, index++, searchIndex.get("num")==null? "":searchIndex.get("num").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("pprise")==null? "":searchIndex.get("pprise").toString(),bodyLeftStyle);
            createStyledCell(row1, index++, searchIndex.get("pcurrency")==null? "":searchIndex.get("pcurrency").toString(),bodyLeftStyle);
            createStyledCell(row1, index++, searchIndex.get("aprice")==null? "":searchIndex.get("aprice").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("acurrency")==null? "":searchIndex.get("acurrency").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("receiver_date")==null? "":searchIndex.get("receiver_date").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("end_date")==null? "":searchIndex.get("end_date").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("custom_id")==null? "":searchIndex.get("custom_id").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("cname")==null? "":searchIndex.get("cname").toString(),bodyRowStyle);
            createStyledCell(row1, index++, searchIndex.get("ordername")==null? "":searchIndex.get("ordername").toString(),bodyRowStyle);
            
        }
        sheet.setColumnWidth(0, 7000);
        sheet.setColumnWidth(1, 3000);
        sheet.setColumnWidth(2, 3000);
        sheet.setColumnWidth(3, 3000);
        sheet.setColumnWidth(4, 3000);
        sheet.setColumnWidth(5, 4000);
        sheet.setColumnWidth(6, 4000);
        sheet.setColumnWidth(7, 4000);
        sheet.setColumnWidth(8, 4000);
        sheet.setColumnWidth(9, 4000);
        sheet.setColumnWidth(10, 4000);
    
    }

}

4调用实现

List<CreditOrderInfo> infos  = OrderManagerService.service.exportSettle(customerId, agentId, time);//需要导出的集合
        com.hailian.util.SettleExport export=new com.hailian.util.SettleExport(infos);//导出
         try {
             fileName=new String(fileName.getBytes("GBK"), "ISO-8859-1");
            export.doExport(getResponse(), fileName);
        renderJson("导出成功");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            renderJson("导出失败");
        }

 

 

 

第二种方法使用设计表结构字段注释做表头

@ApiOperation(value = "后台管理-导出安全岛信息", response = JsonResult.class)
    @RequestMapping(value = "/exportAqd", method = RequestMethod.GET)
    public JsonResult exportAqd(HttpServletRequest request, HttpServletResponse response) {
        AqdDto aqdDto = this.getExportParameter(request);
        List<SysAqd> records = aqdService.getAqd(aqdDto.getPage(), aqdDto.getStart(), aqdDto.getEnd(), aqdDto.getOrgid()).getRecords();
        List<SysAqd> sysAqds = this.getSysAqdListXh(records);
        SysOrg sysOrg = this.orgMapper.selectById(aqdDto.getOrgid());
        //导出操作
        ExcelUtil.exportExcel(sysAqds, sysOrg.getMc()+"注册码" , sysOrg.getMc()+"注册码", SysAqd.class, sysOrg.getMc()+"注册码.xlsx", response);
        return ResultUtil.success(null);
    }

工具类

package ax.tst.common.util;

import ax.tst.exception.TstCommonException;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;

/**
 * @Auther:sy
 * @Date:2018/11/18 20:51
 */
public class ExcelUtil {

    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) {
        ExportParams exportParams = new ExportParams(title, sheetName);
        exportParams.setCreateHeadRows(isCreateHeader);
        defaultExport(list, pojoClass, fileName, response, exportParams);

    }

    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) {
        if (fileName.endsWith(".xlsx")) {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF));
        } else {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
        }
    }

    public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
        defaultExport(list, fileName, response);
    }

    private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {
        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
        if (workbook != null);
        downLoadExcel(fileName, response, workbook);
    }

    private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
        try {
            response.setCharacterEncoding("UTF-8");
            response.setHeader("content-Type" , "application/vnd.ms-excel;charset=utf-8");
            response.setHeader("Content-Disposition" ,
                    "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") );
            ServletOutputStream stream = response.getOutputStream();
            workbook.write(stream);
        } catch (IOException e) {
            throw new TstCommonException(e.getMessage());
        }
    }

    private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
        Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
        if (workbook != null) ;
        downLoadExcel(fileName, response, workbook);
    }

    public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) {
        if (StringUtils.isBlank(filePath)) {
            return null;
        }
        ImportParams params = new ImportParams();
        params.setTitleRows(titleRows);
        params.setHeadRows(headerRows);
        List<T> list = null;
        try {
            list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
        } catch (NoSuchElementException e) {
            throw new TstCommonException("模板不能为空");
        } catch (Exception e) {
            e.printStackTrace();
            throw new TstCommonException(e.getMessage());
        }
        return list;
    }

    public static <T> List<T> importExcel(MultipartFile file, Integer headerRows, Class<T> pojoClass) {
        if (file == null) {
            return null;
        }
        ImportParams params = new ImportParams();
        params.setHeadRows(headerRows);
        List<T> list = null;
        try {
            list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
        } catch (NoSuchElementException e) {
            throw new TstCommonException("excel文件不能为空");
        } catch (Exception e) {
            throw new TstCommonException(e.getMessage());
        }
        return list;
    }


}