m11418166 2017-12-07 09:05 采纳率: 0%
浏览 949

写了一个java的统计考勤 如何和给他设置一个配置文件并且可以通过配置文件修改路径呢

 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//jisuan.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);  

    }
}
}

图片说明
图片说明

需求是想添加一个配置文件 通过配置文件来修改java文件中的读取路径 这个该怎么做啊

  • 写回答

2条回答 默认 最新

  • 白萝卜。 2017-12-07 09:40
    关注

    String fileName = "D://Io//jisuan.xls"; // Excel文件所在路径 这行代码单独拉出来做一个带参数的方法,每次从本地的某个配置文件读取文件内容就行了,然后就可以通过修改配置文件修改每次要创建的东西了。

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料