我有一个CSV文件(excel),其中包含数据,我需要使用java解析数据。 这些文件中的数据不使用逗号分隔,CSV文件具有列数和行数(每个单元格都有数据),其中写入了所有数据。 我需要浏览所有文件,直到我到达每个文件的EOF(文件结尾)并解析数据。 文件中还包含空行,因此空行不是停止解析的标准,我认为只有EOF才会指示我已到达特定文件的末尾。
非常感谢。答案 0 :(得分:2)
您可以使用opencsv来解析excel CSV。我自己用过这个,所有你需要做的就是分开';'。空单元格也将被解析。
您可以在此处找到信息:http://opencsv.sourceforge.net/
要解析excelCSV,你可以这样做:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');
答案 1 :(得分:1)
除了其他建议,我还会提供Jackson CSV module。 Jackson具有非常强大的数据绑定功能,CSV模块允许以CSV格式读/写,以替代JSON(或XML,YAML和其他支持的格式)。因此,除了强大的CSV-to / from-POJO绑定之外,您还可以在其他数据格式之间进行转换。
答案 2 :(得分:0)
请有一个Stream对象来读取CSV文件。
FileInputStream fis = new FileInputStream("FileName.CSV");
BufferedInputStream bis = new BufferedInputStream(fis); InputStreamReader isr = new InputStreamReader(bis);
读取inputstream对象并将文件存储在String对象中。
然后使用StringTokenizer,[逗号]作为分隔符 - >您将获得令牌 请操纵令牌以获取值。
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());
}
谢谢,
帕
答案 3 :(得分:0)
假设您有一个字符串形式的csv fileContent:
String fileContent;
通常,CSV fileContent被解析为List>。
final List<String> rows = new ArrayList<String>(Lists.newArraysList(fileContent.split("[\\r\\n]+")));
将文件拆分为行列表。 然后使用OpenCSV的CSVParser并将逗号分隔的行解析为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");
}
});