Poi基于程序控制导出Excel

导出excel有很多种方法,其中有jxl,poi,jsp都可以,其中我使用的是poi!

例如:

/**
     * 页面配置
     * @param sheet
     * @param isfalg
     * @param pagesize
     */
    private  void PageConfig(HSSFSheet sheet,boolean isfalg,int pagesize){
        HSSFPrintSetup hssfPrintSetup=sheet.getPrintSetup();
        hssfPrintSetup.setLandscape(isfalg); // 打印方向,true:横向,false:纵向(默认)
        hssfPrintSetup.setPaperSize((short)pagesize); //打印大小
    }


/**
     * 设置字体
     * @param size
     * @param f
     * @param weight
     * @param workbook
     * @return
     */
    public HSSFFont getFont(int size,String f,boolean weight,HSSFWorkbook workbook){
        // 创建字体并改变它
        HSSFFont font = workbook.createFont();
        //设置长度
        font.setFontHeightInPoints((short)size);
        font.setFontName(f);
        if(weight){
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        }
        return font;
    }




    /**
     *获取样式
     * @param workbook
     * @param align
     * @param font
     * @return
     */
    private  HSSFCellStyle getCellStyle(HSSFWorkbook workbook,String align,HSSFFont font,boolean  isborder){
        //样式
        HSSFCellStyle cellStyle=workbook.createCellStyle();
        cellStyle.setFillForegroundColor((short)13);
        if(isborder){
        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        }
        if(G4Utils.isNotEmpty(font)){
        cellStyle.setFont(font);
        }
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("@"));
        if(align.equals("left")){
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        }
        if(align.equals("right")){
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        }
        if(align.equals("center")){
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        }
        return cellStyle;
    }

  public void ExportExcel(String pagetitle,String[] headList, String[] colunmnames, List list, HSSFWorkbook workbook,String align,String headtitle,String bodyalign,String [] columnwidth) {
/*        log.debug("---------进入ExportExcelUtil.ExportExcel()开始");*/
        // 创建一页
        HSSFSheet sheet = workbook.createSheet(pagetitle);
        PageConfig(sheet,true,8);//设置excel属性
        HSSFCellStyle headtStyle=getCellStyle(workbook, "center", getFont(16, "宋体", true, workbook), false);
        createExecleHead(sheet,colunmnames.length-1,align,headtStyle,headtitle);//创建属性头部
        // 在索引1的位置创建行(第二行)
        HSSFRow row1 = sheet.createRow((short) 1);
        // 设置单元格样式
        HSSFCellStyle cellStyle =getCellStyle(workbook,bodyalign,null,true);
        for(int j=0;j<headList.length;j++){
            HssfCellConfig(row1.createCell((short)j),cellStyle,headList[j]);
        }
       System.out.println("--------进入ExportExcelUtil.列标题拼接完成-------");
        for (int n=0;n<list.size();n++) {
            try
            {
               HSSFRow row2= sheet.createRow((short) 2+n);
               for(int i=0;i<colunmnames.length;i++){
                   Object o = Ognl.getValue(colunmnames[i],list.get(n));
                   HssfCellConfig(row2.createCell((short) i),cellStyle,o);
               }
            } catch (Exception e) {
                System.out.println("---------组合Excel出错------"+e);
               log.debug("---------组合Excel出错------"+e);
                e.printStackTrace();
            }
        }
       for(int i=0;i<columnwidth.length;i++){
            int width= Integer.valueOf(columnwidth[i]) * 256;
            sheet.setColumnWidth((short)i,(short)width);
        }
        System.out.println("----------进入ExportExcelUtil.数据拼接完成---------") ;
       log.debug("---------进入ExportExcelUtil.数据拼接完成------------");
       log.debug("---------进入ExportExcelUtil.ExportExcel()结束");
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值