我有一个 CSV 文件(excel),其中包含数据,我需要使用 java 解析数据。这些文件中的数据不使用逗号分隔,CSV 文件的列数和行数(每个单元格都有数据)写入所有数据。我需要遍历所有文件,直到到达每个文件的 EOF(文件结尾)并解析数据。文件中还包含空行,因此空行不是停止解析的标准,我认为只有 EOF 会表明我已经到达特定文件的末尾。
非常感谢。
您可以使用 opencsv 来解析 excel CSV。我自己用过这个,你需要做的就是在';'上分开。空单元格也将被解析。
你可以在这里找到信息:http: //opencsv.sourceforge.net/
要解析 excelCSV,您可以执行以下操作:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');
除了其他建议,我会提供Jackson CSV module。Jackson 具有非常强大的数据绑定功能,并且 CSV 模块允许读取/写入 CSV 作为 JSON(或 XML、YAML 和其他支持的格式)的替代方案。因此,除了强大的 CSV-to/from-POJO 绑定之外,您还可以在其他数据格式之间进行转换。
请有一个流对象来读取 CSV 文件。
FileInputStream fis = new FileInputStream("FileName.CSV");
BufferedInputStream bis = new BufferedInputStream(fis); InputStreamReader isr = new InputStreamReader(bis);
读取输入流对象并将文件存储在字符串对象中。
然后使用带有 ,[comma] 作为分隔符的 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());
}
谢谢,
帕万
假设您有一个字符串形式的 csv 文件内容:
String fileContent;
一般将CSV文件内容解析为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");
}
});