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 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误