java处理csv格式数据
package com.baorant; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; public class GetExcelData { public static void main(String[] args) { File csv = new File("csv//1205.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<>(); List<Integer> allInt = new ArrayList<>(); int[] records = new int[24 * 60 / 5];//存取每个时间段的通过数量,可以获得最大分钟后得到长度; while ((line = br.readLine()) != null) // 读取到的内容给line变量 { // System.out.println(line); everyLine = line; if(!everyLine.contains(" ")){ continue;//有些文件中时间模式没有空格 } String tem = everyLine.substring(everyLine.lastIndexOf(" ") + 1);// 获取每一行空格后面的部分; String tem2 = tem.substring(0, tem.indexOf(",", tem.indexOf(",") - 1));// 获得每一行逗号前面的部分; // s.substring(0, s.indexOf(".",s.indexOf(".")-1 )) tem2 = tem2.replace("\"","");//去掉字符串中可能多出的引号 System.out.println(tem2); System.out.println(tem2.length()); String hourStr;// 获得字符串小时部分 String minuteStr;// 获得字符串分钟部分 if(tem2.length() == 5){ hourStr = tem2.substring(0, 2); minuteStr = tem2.substring(3, 5); }else if(tem2.length() == 4){ hourStr = tem2.substring(0, 1); minuteStr = tem2.substring(2, 4); }else if(tem2.length() == 7){//时间为7位 hourStr = tem2.substring(0, 1); minuteStr = tem2.substring(2, 4); }else{//时间为8位 hourStr = tem2.substring(0, 2); minuteStr = tem2.substring(3, 5); } if (!tem2.contains("SSID")) { String subHourStr; String subMinuteStr; if(hourStr.length() == 2) { if(hourStr.charAt(0) == '0'){ subHourStr = hourStr.substring(1, 2); }else{ subHourStr = hourStr.substring(0, 2); } }else{ subHourStr = hourStr.substring(0, 1); } if(minuteStr.length() == 2) { if(minuteStr.charAt(0) == '0') { subMinuteStr = minuteStr.substring(1, 2); }else{ subMinuteStr = minuteStr.substring(0, 2); } }else { subMinuteStr = minuteStr.substring(0, 1); } Integer hours = Integer.valueOf(subHourStr);//小时数 // System.out.println(hours); int minutes = Integer.valueOf(subMinuteStr);//分钟数 // System.out.println(minutes); int minutestotal = 60 * hours + minutes;//当前时间总的分钟数 System.out.println(minutestotal); allInt.add(minutes); int n = minutestotal/5; records[n] = records[n] + 1; System.out.println("n:" + n + "records[minutestotal/5]:" + records[n]); } allString.add(tem2); } System.out.println("csv表格中所有行数:" + allString.size()); System.out.println(allInt.size()); for(int i = 0; i < records.length; i++){ System.out.print(records[i] + " "); } } catch (Exception e) { e.printStackTrace(); } } }
该程序主要获得了excel表格中的每一行数据后获得其中的时间,然后按自己需要的格式进行处理得到想要的数据。