利用Java反射、泛型和apache/poi编写可通用的导出Excel代码

最近项目多处用到excel导出功能,每次都要copy上次写好的导出代码来改,太麻烦,干脆写了一个稍微可以通用的导出excel代码,
/**
 * Created by DX.liu on 2015/4/14.
 */
public class ExportUtil {
    /**
     *
     * @param 
     *@param sheetName 创建的表格sheet名称
     * @param params 需创建的excel列名数组,数组元素必须以“名称(filed)”命名 ,如:名称(name),其中‘name’是实体类中对应的字段名!
     *               {"用户名(userName)","密码(password)","性别(sex)","邮箱(email)","年龄(age)","电话(phone)"}
     * @param objects 实体对象list
     * @return
     * @throws IllegalAccessException
     * @throws IllegalArgumentException
     */
    public static   HSSFWorkbook exp(String sheetName,String[] params,List objects) throws IllegalArgumentException, IllegalAccessException{
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet(sheetName);
        HSSFRow row = sheet.createRow(0);
        // 创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = workbook.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 创建一个居中格式
        HSSFCell cell = null;
        String[] fields = new String[params.length];
        for(int i=0;i
     */
    public static void exportExcell(String excellName,String sheetName,String[] params,List objects,HttpServletResponse response) {
        OutputStream os = null;
        try {
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(excellName.getBytes("GBK"), "ISO-8859-1"));
            os = response.getOutputStream();
            HSSFWorkbook workbook = exp(sheetName, params, objects);
            workbook.write(os);
            os.close();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(null != os){
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

你可能感兴趣的:(Java,泛型,java,poi,excel)