我怎样才能在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"); } });