解析csv文件

以下内容仅为记录:

第一步:解析csv文件

    @Test
    public void testcsv() throws Exception {
        File csv = new File("C:\\Users\\hjy\\Desktop\\attendace164_20180312.csv");  // CSV文件路径
        BufferedReader br = null;
        try
        {
            br = new BufferedReader(new FileReader(csv));
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        String line = "";
        String everyLine = "";
        try {
            List<String> allString = new ArrayList<>();
            while ((line = br.readLine()) != null)  //读取到的内容给line变量
            {
                everyLine = line;
                System.out.println(everyLine);
                allString.add(everyLine);
            }
            System.out.println("csv表格中所有行数:"+allString.size());
        } catch (IOException e)
        {
            e.printStackTrace();
        }

    }

csv文件样式


解析的内容:



第二步:将数据写入csv

  @Test
    public void testcsv1(){
        //自定义数组
        ArrayList<ArrayList<String>> alldata=new ArrayList<ArrayList<String>>();
        alldata.add(new ArrayList<String>(Arrays.asList("1","11","111")));  //添加一行
        alldata.add(new ArrayList<String>(Arrays.asList("2","22","222")));  //添加一行
        alldata.add(new ArrayList<String>(Arrays.asList("3","33","333")));  //添加一行
        //保存成csv文件
        Array2CSV(alldata,"test.csv");
//        //读取csv文件
//        ArrayList<ArrayList<String>> alldata1=CSV2Array("test.csv");
//        //遍历数组
//        for (ArrayList<String> arrayList : alldata1) {
//            for (String string : arrayList) {
//                System.out.println(string);
//            }
//        }

    }

    //导出到csv文件
    public static void Array2CSV(ArrayList<ArrayList<String>> data, String path)
    {
        try {
            BufferedWriter out =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),"UTF-8"));
            for (int i = 0; i < data.size(); i++)
            {
                ArrayList<String> onerow=data.get(i);
                for (int j = 0; j < onerow.size(); j++)
                {
                    out.write(onerow.get(j));
                    out.write(",");
                }
                out.newLine();
            }
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
        List<Checkins> list = checkinsQuery.asList();
        if (CollectionUtils.isNotEmpty(list)) {
            try {
                FileWriter fw = new FileWriter("data_"+ea+"_"+date+".csv");
                String header = "员工姓名,签到时间,签到地点\r\n";
                fw.write(header);
                StringBuffer str = new StringBuffer();
                list.forEach(o -> {
                    String name = o.getOwnerName();
                    String checkTime = DateUtils.getStringFromTime(o.getCheckinsTimeStamp(), DateUtils.DateTimeFormat);
                    String address = o.getCheckinsAddressDesc();
                    str.append(name).append(",")
                            .append(checkTime).append(",")
                            .append(address).append(",")
                            .append("\r\n");
                });
                fw.write(str.toString());
                fw.flush();
                fw.close();
            } catch (Exception e) {
                LOG.error("getCheckinsData error ", e);
            }
        }
        LOG.info("getCheckinsData end ea:{},date:{}", ea, date);

最终写出的结果:


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值