android读取csv文件数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pbm863521/article/details/80929497

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;
}

猜你喜欢

转载自blog.csdn.net/pbm863521/article/details/80929497