码迷,mamicode.com
首页 > 其他好文 > 详细

POI导出excel,对于所有的VO实体都通用.

时间:2015-07-31 16:24:43      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:poi导出excel   poi下载excel   java导出下载   

 /* 前面是列定义,后面是VO属性
     * para :主管海关,自定义类型,内部清单号-customMasterLabel,entryTypeLabel,internalListNo
     * list : 数据list<VO>
     * */
    public static String commonExport(String para,List list) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
        HttpServletResponse response = ServletActionContext.getResponse();
        
        /*
         * POI 操作Excel - 步骤:
         * */
        HSSFWorkbook workbook = new HSSFWorkbook();
        ServletOutputStream out = null;
        try {
            out = response.getOutputStream();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        HSSFSheet sheet = workbook.createSheet("sheet1");    
        sheet.setColumnWidth(0, 1500); //设置序号列宽,其他列暂时一样宽
        sheet.setDefaultColumnWidth ((short)12);                        // 设置工作表列宽
        sheet.setDefaultRowHeight((short)250);                           // 设置工作表行高
        /*
         * sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面  - 可扩展】
         * */
        //HSSFCellStyle columnTopStyle = ExportExcelUtilsStyle.getColumnTopStyle(workbook);//获取列头样式对象
        //HSSFCellStyle style = ExportExcelUtilsStyle.getStyle(workbook);                  //单元格样式对象
        //列头数组定义
        para = "序号,"+para;
        String[] s = para.split("-");
        String s0 = s[0];
        String s1 = s[1];
        List titleList = Arrays.asList(s0.split(","));
        List colList = Arrays.asList(s1.split(","));
        //String[] label = ExportExcelUtilsModel.getExportMoedel(modelFlag);
        // 定义所需列数
        int columnNum = titleList.size();
        //设置列头
        HSSFRow row1 = sheet.createRow((short)0);               // 在索引0的位置创建行(最顶端的行)
        HSSFCell cell1 = null;                                  // 在索引0的位置创建单元格(左上端)
        // 将列头设置到sheet的单元格中
        for(int n=0;n<columnNum;n++){
            cell1 = row1.createCell((short)(n));                //创建列头对应个数的单元格
            cell1.setCellType(HSSFCell.CELL_TYPE_STRING);       //设置列头单元格的数据类型
            cell1.setCellValue(titleList.get(n).toString());     //设置列头单元格的值
            //cell1.setCellStyle(columnTopStyle);                 //设置列头单元格样式
        }
        
        if(null==list||list.size()==0){
            return "exportList size is zero";
        }
        int i=1;
        for(int m=0;m<list.size();m++){
            StringBuffer sb = new StringBuffer();
            String result="";
            for(int k=0;k<colList.size();k++){
                result = BeanUtils.getProperty(list.get(m),colList.get(k).toString());
                if(k==0){
                    sb.append(result);   
                }else{
                    sb.append(","+result);   
                }
                
            }
            //将属性转化成字符串数组的格式以便于写到sheet中
            String contentStr = i+","+sb.toString();
            List c = Arrays.asList(contentStr.split(","));
            
            //创建行(从下面的i+1要注意,第0行是列头,因此创建新行要从下一行开始)
            HSSFRow row = sheet.createRow(i);                             //创建所需的行数
            for(short j=0;j<columnNum;j++){
                HSSFCell cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);//设置单元格的数据类型
                cell.setCellValue(c.get(j).toString());                                    //设置单元格的值
                //cell.setCellStyle(style);                                   //设置单元格样式
            }
            i++;
        }
        if(workbook !=null){
            // 获取当前时间用作文件名
            try {
                String filename = "导出文件的名字" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
                response.setContentType("application/ms-excel");  
                response.setHeader("Content-Disposition", "filename="+new String(filename.toString().concat(".xls").getBytes(),"UTF-8"));
                workbook.write(out);
                out.flush();        // 缓冲
                out.close();        // 关闭流(养成好的习惯打开了就别忘记关闭)
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
        
        return "导出成功";
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

POI导出excel,对于所有的VO实体都通用.

标签:poi导出excel   poi下载excel   java导出下载   

原文地址:http://blog.csdn.net/xlb744868186/article/details/47170053

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!