Java解析CSV文件

原创 2012年03月22日 17:31:22
package com.test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class TestImportCsv {

	private InputStreamReader fr = null;
	private BufferedReader br = null;

	public TestImportCsv(String f) throws IOException {
		fr = new InputStreamReader(new FileInputStream(f));
	}

	/**
	 * 解析csv文件 到一个list中 每个单元个为一个String类型记录,每一行为一个list。 再将所有的行放到一个总list中
	 */
	public List<List<String>> readCSVFile() throws IOException {
		br = new BufferedReader(fr);
		String rec = null;// 一行
		String str;// 一个单元格
		List<List<String>> listFile = new ArrayList<List<String>>();
		try {
			// 读取一行
			while ((rec = br.readLine()) != null) {
				Pattern pCells = Pattern
						.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,");
				Matcher mCells = pCells.matcher(rec);
				List<String> cells = new ArrayList<String>();// 每行记录一个list
				// 读取每个单元格
				while (mCells.find()) {
					str = mCells.group();
					str = str.replaceAll(
							"(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
					str = str.replaceAll("(?sm)(\"(\"))", "$2");
					cells.add(str);
				}
				listFile.add(cells);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fr != null) {
				fr.close();
			}
			if (br != null) {
				br.close();
			}
		}
		return listFile;
	}

	public static void main(String[] args) throws Throwable {
		TestImportCsv test = new TestImportCsv("D:/test.csv");
		List<List<String>> csvList = test.readCSVFile();		
	}

}


虽然我看不懂,但是我能用得来就行了。。。

一种准标准CSV格式的介绍和分析以及解析算法

CSV是一种古老的数据传输格式,它的全称是Comma-Separated Values(逗号分隔值)。出生在那个标准缺失的蛮荒年代,CSV的标准一直(到2005年)是NULL——世间存在着N种CSV格...

CSV文件格式解析器的实现:从字符串Split到FSM

本文乃Siliphen原创,转载请注明出处:   本文分为5小节,基本上就是我刚接触CSV文件到思考、实践做一个CSV解析器的过程的还原。希望我的思路也能带领你一步步从浅到深认识CSV文件格式。   ...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

java 解析csv

opencsvjava读取csv的类库主要有两种,opencsv和javacsv,研究发现,javacsv最后一次更新是2014-12-10,很久不维护了。opencsv是apache的项目,并且至今...

Java读取CSV的常用方法

在项目开发中,我们经常需要读取csv的内容的操作。读取的逻辑并不复杂。主要是对有换行的,逗号,引号的处理恰当的话就没问题了。 下面作为memo,把在项目中的读取方法拷贝了过来。有了下面的这些方法,在...

java读写CSV文件的两种方法

BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "GBK...

利用JavaCSV API来读写csv文件

利用JavaCSV API读写csv文件,这是一个成熟的三方工具包,可以极大提升开发者开发效率。...

java解析csv 文件代码

package com.huawei.iread.base.server.util; import java.io.BufferedReader; import java.io.BufferedWr...

利用Javacsv实现Java读写csv文件

今天跟大家分享一个利用外部Jar包来实现Java操作CSV文件 一.资源下载 1.直接下载Jar包: http://central.maven.org/maven2/net/sourceforg...
  • StemQ
  • StemQ
  • 2017年03月07日 23:03
  • 4074

java 解析 csv 文件

文章分类:JavaEye一。貌似有bug,不行用 二。或 三。 的方法Java代码  import java.io.BufferedReader;   import java.io.FileInput...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java解析CSV文件
举报原因:
原因补充:

(最多只允许输入30个字)