统计考勤

package com.haxk.fangfa;


import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;










public class zijixiedefangfa {
public static void main(String[] args) throws BiffException, IOException, ParseException {
String fileName = "D://Io//kaoqin.xls"; // Excel文件所在路径  
   File file = new File(fileName); // 创建文件对象  
   Workbook wb = Workbook.getWorkbook(file); // 从文件流中获取Excel工作区对象(WorkBook)  
   Sheet sheet = wb.getSheet(0); // 从工作区中取得页(Sheet)
   
   int n =0;
   Date min = null;
   
   String firm = ""; //定义公司
   String name = ""; //定义姓名
   String day = ""; //定义日期
   String time_start = ""; //定义最早时间
   String time_end = "";  //定义最晚时间

   List shuju = new ArrayList();   //定义总的传入集合
   List bumen = new ArrayList();  //部门
   List xingming = new ArrayList();   //姓名
   List date = new ArrayList();   //日期
   List earlyTime = new ArrayList();  //上班时间
   List endTime = new ArrayList<Date>();    //下班时间
   List workTime = new ArrayList();  //上班时间
   List chidao  = new ArrayList();  //迟到
   List zaotui  = new ArrayList();   //早退
   
   //最晚上班时间
   SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
   Date biaozhun  = df.parse("10:00:00");


while(n<sheet.getRows()){
   //这一天的最早上班时间
    firm = sheet.getCell(0,shuju.size()).getContents();
    name = sheet.getCell(1,shuju.size()).getContents();
    day = sheet.getCell(2,shuju.size()).getContents();
    time_start = sheet.getCell(3,shuju.size()).getContents();
   
    bumen.add(sheet.getCell(0,shuju.size()).getContents());
    xingming.add(sheet.getCell(1,shuju.size()).getContents());
    date.add(sheet.getCell(2,shuju.size()).getContents());
    earlyTime.add(sheet.getCell(3,shuju.size()).getContents());
    //判断是否迟到
    if(df.parse(sheet.getCell(3,shuju.size()).getContents()).getTime()>biaozhun.getTime()){
    chidao.add("迟到");
    }else{
    chidao.add("");
    }

while(n<sheet.getRows()){
   //如果前三条数据一样的话 说明是同一天
   if(sheet.getCell(0,n).getContents().equals(firm) && sheet.getCell(1,n).getContents().equals(name) && sheet.getCell(2,n).getContents().equals(day) ){
    shuju.add(sheet.getCell(3,n).getContents());
   }else{
    break;
   }
   n++;
   }
   //当前三条数据不一样时 退出当前while循环 数组长度减1的下标就是下班时间
   endTime.add(sheet.getCell(3,shuju.size()-1).getContents());
    }
   
   for (int i = 0; i < earlyTime.size(); i++) {
try {
workTime.add((df.parse((String) endTime.get(i)).getTime()-df.parse((String) earlyTime.get(i)).getTime())/3600000+"小时");
//判断是否早退
if((df.parse((String) endTime.get(i)).getTime()-df.parse((String) earlyTime.get(i)).getTime())/3600000>=8){
zaotui.add("");
}else{
zaotui.add("早退");
}
} catch (ParseException e) {
e.printStackTrace();
}
}
   //关闭读取流
   wb.close();
   
   
   try {
   //打开写入流 
   WritableWorkbook book = Workbook.createWorkbook(new File("D://Io//stu.xls"));  
   // 生成名为“sheet1”的工作表,参数0表示这是第一页  
   WritableSheet kaoqin = book.createSheet("kaoqin", 0);
   
   //写入部门 
   for (int i = 0; i < bumen.size(); i++) {
   Label label = new Label(0, i,  (String) bumen.get(i));  
   // 将定义好的单元格添加到工作表中  
   kaoqin.addCell(label); 
   } 
            
   //写入姓名
   for (int i = 0; i < xingming.size(); i++) {
   Label label = new Label(1, i,  (String) xingming.get(i));   
   kaoqin.addCell(label); 
   } 
            
   //写入日期
   for (int i = 0; i < date.size(); i++) {
   Label label = new Label(2, i,  (String) date.get(i));    
   kaoqin.addCell(label); 
   } 
            
   //写入上班时间
   for (int i = 0; i < earlyTime.size(); i++) {
   Label label = new Label(3, i,  (String) earlyTime.get(i));  
   kaoqin.addCell(label); 
   } 
            
            
   //写入下班时间
   for (int i = 0; i < endTime.size(); i++) {
   Label label = new Label(4, i,  (String) endTime.get(i));   
   kaoqin.addCell(label); 
   } 
            
   //写入总共上班时间
   for (int i = 0; i < workTime.size(); i++) {
   Label label = new Label(5, i,   (String) workTime.get(i)) ;  
   kaoqin.addCell(label); 
   } 
            
   //加入迟到
            
   for (int i = 0; i < chidao.size(); i++) {
   Label label = new Label(6, i,   (String) chidao.get(i)) ;  
   kaoqin.addCell(label); 
   } 
            
   //写入早退
   for (int i = 0; i < zaotui.size(); i++) {
   Label label = new Label(7, i,   (String) zaotui.get(i)) ;  
   kaoqin.addCell(label); 
   } 
            
   book.write();    //执行写入操作
   book.close();  //关闭流
   
}catch (Exception e) {
System.out.println(e);  

}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值