我怎样才能在Java中parsingCSV(excel,不以逗号分隔)文件?

我有一个CSV文件(excel),里面有数据,我需要使用javaparsing数据。 这些文件中的数据不会使用逗号分隔,CSV文件具有写入所有数据的列数和行数(每个单元都有数据)。 我需要通过所有的文件,直到我到达每个文件的EOF(文件的结尾),并parsing数据。 该文件也包含空行,所以空行不是一个标准停止parsing,我认为只有EOF将表明我已经达到特定文件的末尾。

非常感谢。

你可以使用opencsvparsingexcel CSV。 我自己用这个,你所需要做的就是分裂在';'上。 空单元格也将被parsing。

你可以在这里find信息: http : //opencsv.sourceforge.net/

而parsingexcelCSV你可以这样做:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';'); 

请有一个stream对象来读取CSV文件。

 FileInputStream fis = new FileInputStream("FileName.CSV"); 

BufferedInputStream bis = new BufferedInputStream(fis); InputStreamReader isr = new InputStreamReader(bis);

读取一个inputstream对象并将其存储在String对象中。

然后使用StringTokenizer,[逗号]作为delimeter – >您将得到令牌请操纵令牌来获取值。

 String str = "This is String , split by StringTokenizer, created by mkyong"; 

StringTokenizer st = new StringTokenizer(str);

  System.out.println("---- Split by space ------"); while (st.hasMoreElements()) { System.out.println(st.nextElement()); } System.out.println("---- Split by comma ',' ------"); StringTokenizer st2 = new StringTokenizer(str, ","); while (st2.hasMoreElements()) { System.out.println(st2.nextElement()); } 

谢谢,

帕文

除了其他build议,我会提供jacksonCSV模块 。 Jackson拥有非常强大的数据绑定function,CSV模块允许以CSV格式作为JSON(或XML,YAML和其他支持的格式)的替代方式进行读取/写入。 因此,除了强大的CSV到/从POJO绑定之外,您还可以在其他数据格式之间进行转换。

假设你有一个stringforms的csv fileContent:

 String fileContent; 

通常,CSV文件内容被parsing成List>。

 final List<String> rows = new ArrayList<String>(Lists.newArraysList(fileContent.split("[\\r\\n]+"))); 

将文件拆分成行列表。 然后使用OpenCSV的CSVParser,并将逗号分隔的行parsing为List

 final CSVParser parser = new CSVParser(); final List<List<String>> csvDetails = new ArrayList<List<String>>(); rows.forEach(t -> { try { csvDetails.add(Lists.newArrayList(parser.parseLine(t))); } catch (Exception e) { throw new RunTimeException("Exception occurred while parsing the data"); } });