android讀取csv檔案資料
阿新 • • 發佈:2018-11-01
csv檔案是一種表格形式的檔案,如果把檔案字尾名改為.txt,會發現同一行資料之間是用英文“,”隔開的。
如何讀取csv檔案以便把資料存入資料庫呢,特別是csv檔案中有些資料是空?
csv檔案如下:
把檔案字尾名改為.txt後如下:
電錶id,電錶編號,模組地址,描述,所屬站點名稱,所屬站點聯絡人,所屬站點聯絡電話,所屬站點地址
343433,3434,3434434,,45454,4545,,
2222222,555555,11111111,,44444444,111111111,11144411666,44444444
333333,3333399,33333333,,4333334,2222222,11111783487,6666666
78737777,8888888,44444444,,45454,4545,,
解析csv檔案有專門的解析包,這裡不做贅述。現在用一個簡單的方法就能解析csv檔案。程式碼如下:
//讀取CSV檔案 public static List<ModuleAddressBean> readCSV(String path,Activity activity){ List<ModuleAddressBean> list=new ArrayList<ModuleAddressBean>(); File file=new File(path); if (!file.exists()) { file.mkdirs(); } FileInputStream fiStream; Scanner scanner; try { fiStream=new FileInputStream(file); scanner=new Scanner(fiStream,"UTF-8"); scanner.nextLine();//讀下一行,把表頭越過。不註釋的話第一行資料就越過去了 int a=0; while (scanner.hasNextLine()) { String sourceString = scanner.nextLine(); Log.e("source-->", sourceString); Pattern pattern = Pattern.compile("[^,]*,"); Matcher matcher = pattern.matcher(sourceString); String[] lines=new String[8]; int i=0; while(matcher.find()) { String find = matcher.group().replace(",", ""); lines[i]=find.trim(); Log.e(TAG, "find="+find+",i="+i+",lines="+lines[i]); i++; } ModuleAddressBean bean = new ModuleAddressBean(a,lines[0],lines[1],lines[2],lines[3],lines[4],lines[5],lines[6],lines[7],0); list.add(bean); a++; i=0; } } catch (NumberFormatException e) { showToast(activity, "NumberFormatException"); e.printStackTrace(); } catch (FileNotFoundException e) { showToast(activity, "檔案不存在"); e.printStackTrace(); } return list; }