java导出有格式的excel

准备数据

@RequestMapping("/exportjddetail")
        public  void  exportjddetail(HttpServletResponse  response,String  timeS,String  timeE,String  ztsName,String  zjyflag,String  travelId)  throws  Exception{
                OutputStream  os  =  null;
                try  {//  取得一个输出流
                        os  =  response.getOutputStream();
                }  catch  (IOException  e)  {
                        e.printStackTrace();
                }
                response.reset();//  清空输出流
                //  下面是对中文文件名的处理
                //  设置相应内容的编码格式
                response.setCharacterEncoding("utf-8");
                //  把excel文件名的编码格式再设置一下
                String  name  =  java.net.URLEncoder.encode("统计"+DateUtils.getTimeCode(),  "utf-8");//  这是给excel表格起名字用的
                response.setHeader(
                                "Content-Disposition",
                                "attachment;filename="
                                                +  new  String(name.getBytes("UTF-8"),  "GBK")  +  "."+"xls");
                response.setContentType("application/msexcel");//  定义输出类型
                if(StringUtil.isFullNull(ztsName)&&StringUtil.isFullNull(zjyflag)){//没有查询条件查询全部
                        ztsName="";
                        zjyflag="";
                }else
                if(!StringUtil.isFullNull(ztsName)&&StringUtil.isFullNull(zjyflag)){  
                        zjyflag="";
                }else  if(StringUtil.isFullNull(ztsName)&&!StringUtil.isFullNull(zjyflag)){//按照是否查询
                        ztsName="";
                }else{    //两个都不为空    按照名称查询
                        zjyflag="";
                }
                Map<String,Object>  map=shlogsService.exportjddetail(timeS,timeE,ztsName,zjyflag,travelId);//查询需要到处的数据
                //导出数据
                List<Map>  list    =  (List)map.get("list");
                MergeCell.exportjddetail(os,list);
        }

导出方法

/**
          *  导出
          *  @param  os
          *  @param  list
          *  @throws  Exception
          */
        public    static    void    exportjddetail(  OutputStream  os,List<Map>  list)  throws  Exception{
                //创建workbook
                HSSFWorkbook  workbook  =  new  HSSFWorkbook();
                //创建sheet页
                HSSFSheet  sheet  =  workbook.createSheet("统计表");
                //  sheet.setColumnWidth(0,  20  *  256);
                //  生成一个样式
                HSSFCellStyle  style  =  workbook.createCellStyle();
                //  设置这些样式
                style.setAlignment(HorizontalAlignment.CENTER);//水平居中
                style.setVerticalAlignment(VerticalAlignment.CENTER);
                //创建标题

                //创建单元格
                HSSFRow  row  =  sheet.createRow(0);    //创建第一行
                HSSFCell  c0  =  row.createCell(0);        //第一列
                c0.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c1  =  row.createCell(1);
                c1.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c2  =  row.createCell(2);
                c2.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c3  =  row.createCell(3);
                c3.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c4  =  row.createCell(4);
                c4.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c5  =  row.createCell(5);
                c5.setCellValue(new  HSSFRichTextString("xx"));
                HSSFCell  c6  =  row.createCell(6);
                c6.setCellValue(new  HSSFRichTextString("xx") );
                HSSFCell c7 = row.createCell(7);
                c7.setCellValue(new HSSFRichTextString("xx"));
                HSSFCell c8 = row.createCell(8);
                c8.setCellValue(new HSSFRichTextString("xx"));
                HSSFCell c9 = row.createCell(9);
                c9.setCellValue(new HSSFRichTextString("xx"));
                HSSFCell c10 = row.createCell(11);
                c10.setCellValue(new HSSFRichTextString("xx"));

                HSSFRow row1 = sheet.createRow(1);  //第二行
                HSSFCell c77 = row1.createCell(9);
                c77.setCellValue(new HSSFRichTextString("xx"));
                HSSFCell c777 = row1.createCell(10);
                c777.setCellValue(new HSSFRichTextString("xx"));


 //参数说明:1:开始行 2:结束行  3:开始列 4:结束列
//比如我要合并 第二行到第四行的    第六列到第八列     sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));
        // sheet.addMergedRegion(new CellRangeAddress(1, 1, 0, 6)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 5, 5)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 6, 6)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 7, 7)) ;
        sheet.addMergedRegion(new CellRangeAddress(0, 1, 8, 8)) ;

        sheet.addMergedRegion(new CellRangeAddress(0, 0, 9, 10)) ;
        sheet.addMergedRegion(new CellRangeAddress(2, list.size()+2, 0, 0)) ;
        //填充数据
        for(int i =0;i<list.size();i++){//行
            HSSFRow row8 = sheet.createRow(i+2);
            HSSFCell c66 = row8.createCell(0);
            c66.setCellValue(new HSSFRichTextString((String)list.get(i).get("unitName")));
            HSSFCell c661 = row8.createCell(1);
            c661.setCellValue(new HSSFRichTextString(list.get(i).get("ztagency").toString()));
            HSSFCell c662 = row8.createCell(2);
            c662.setCellValue(new HSSFRichTextString(list.get(i).get("name").toString()));
            HSSFCell c663 = row8.createCell(3);
            c663.setCellValue(new HSSFRichTextString(list.get(i).get("lifeTime").toString()));
            HSSFCell c664 = row8.createCell(4);
            c664.setCellValue(new HSSFRichTextString(list.get(i).get("teamNum").toString()));
            HSSFCell c665 = row8.createCell(5);
            c665.setCellValue(new HSSFRichTextString(list.get(i).get("types").toString()));
            HSSFCell c66s = row8.createCell(6);
            c66s.setCellValue(new HSSFRichTextString(list.get(i).get("totalMoney").toString()));
            HSSFCell c667 = row8.createCell(7);
            c667.setCellValue(new HSSFRichTextString(list.get(i).get("zhusnum").toString()));
            HSSFCell c668 = row8.createCell(8);
            c668.setCellValue(new HSSFRichTextString(list.get(i).get("scenicnum").toString()));
            HSSFCell c6677 = row8.createCell(9);
            c6677.setCellValue(new HSSFRichTextString(list.get(i).get("ztsMoney").toString()));
            HSSFCell c6688 = row8.createCell(10);
            c6688.setCellValue(new HSSFRichTextString(list.get(i).get("djsMoney").toString()));
            HSSFCell c669 = row8.createCell(11);
            c669.setCellValue(new HSSFRichTextString(list.get(i).get("chaxuntime").toString()));
        }

        //给全部有数据的单元格设置样式
        int rowNum=sheet.getLastRowNum();//获得总行数
        for(int i=0;i<=rowNum;i++){//行
            for(int j=0;j<=11;j++){//列
                sheet.setColumnWidth(j, 22*256);
                HSSFRow tempRow = sheet.getRow(i);
                if(i==0){
                    tempRow.setHeightInPoints(20);
                }else if(i==5){
                    tempRow.setHeightInPoints(20);
                }else{
                    tempRow.setHeightInPoints(20);
                }
                HSSFCell cell_temp = tempRow.getCell(j);
                if(cell_temp==null){
                    cell_temp = tempRow.createCell(j);
                    cell_temp.setCellStyle(style);
                }else{
                    cell_temp.setCellStyle(style);
                }
            }
        }
        workbook.write(os);
        workbook.close();
        os.flush();
        os.close();
    }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值