JAVA动态生成excel

来源:互联网 发布:微信点赞软件怎么用 编辑:程序博客网 时间:2024/04/28 22:35

* 产生EXCEL
  */
 public ActionForward createExcel( ActionMapping mapping,
          ActionForm form,
          HttpServletRequest request,
          HttpServletResponse response) {
  HttpSession s = request.getSession() ;
  perAttendForm p = (perAttendForm)form;
  List list = (List)s.getAttribute("list") ;
  String fileUrl = "";
  // 写入
  try {
  
   File file ;
   if(p.getExcelName()==null || p.getExcelName().equals("AttendExcel")){
   String time = (new Date()).toLocaleString().replace(":", "-");
    file = new File("D:/AttendExcel" + time + ".xls") ;
  } else {
    file = new File("D:/" + p.getExcelName() + ".xls") ;
   }
   file = new File("D:/" + p.getExcelName() + ".xls") ;
   fileUrl = file.getAbsolutePath() ;
            //打开文件
            WritableWorkbook AttendExcel = Workbook.createWorkbook( file );
            //生成名为"考勤表单"的工作表,参数0表示这是第一页
            WritableSheet sheet = AttendExcel.createSheet("考勤表单", 0) ;
            // 设置标题的样式
            jxl.write.WritableFont wf = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,true) ;
      jxl.write.WritableCellFormat wcf = new WritableCellFormat( wf ) ;
      // 标题栏
            Label label1 = new Label(0, 0, "所在项目组",wcf);
         // 将定义好的单元格添加到工作表中
            sheet.addCell(label1);
            Label label2 = new Label(2, 0, "姓名",wcf);      
            sheet.addCell(label2);
            Label label3 = new Label(4, 0, "正常(天)",wcf);      
            sheet.addCell(label3);
            Label label4 = new Label(6, 0, "平时加班(小时)",wcf);      
            sheet.addCell(label4);
            Label label5 = new Label(8, 0, "周末_节日加班(天)",wcf);      
            sheet.addCell(label5);
            Label label6 = new Label(10, 0, "迟到",wcf);  
            sheet.addCell(label6);
            Label label7 = new Label(12, 0, "早退",wcf);      
            sheet.addCell(label7);
            Label label8 = new Label(14, 0, "病假(天)",wcf);      
            sheet.addCell(label8);
            Label label9 = new Label(16, 0, "事假",wcf);      
            sheet.addCell(label9);
            Label label10 = new Label(18, 0, "出差(天)",wcf);
            sheet.addCell(label10);
            Label label11 = new Label(20, 0, "带薪假(天)",wcf);      
            sheet.addCell(label11);
            Label label12 = new Label(22, 0, "带岗(天)",wcf);
            sheet.addCell(label12);
           
            int i = 1 ;
            int j ;
            // 循环数据
            for(Iterator it = list.iterator() ;it.hasNext();) {
             j = 0 ;
       Object[] objs=(Object[])it.next() ;
       String t ;
       if(objs[0]==null){ t = "暂无"; }else{ t = objs[0].toString(); }
       // 所在项目组
       sheet.addCell(new jxl.write.Label(j, i, t));
       // 姓名
       sheet.addCell(new jxl.write.Label(j=j+2, i, objs[1].toString()));
       // 以下都是统计的数值,用NUMBER
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[2].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[3].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[4].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[5].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[6].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[7].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[8].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[9].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[10].toString()) ));
       sheet.addCell(new jxl.write.Number(j=j+2, i, new Integer( objs[11].toString()) ));
       i++;
            }
            //写入数据并关闭文件
            AttendExcel.write();
            AttendExcel.close();

        } catch (Exception e) {
            System.out.println(e);
        } 
       
  return null;
 }

该文章转载自网络大本营:http://www.qqview.com/Dev/JAVA/200831918876.Html