1

我有一个 CSV 文件(excel),其中包含数据,我需要使用 java 解析数据。这些文件中的数据不使用逗号分隔,CSV 文件的列数和行数(每个单元格都有数据)写入所有数据。我需要遍历所有文件,直到到达每个文件的 EOF(文件结尾)并解析数据。文件中还包含空行,因此空行不是停止解析的标准,我认为只有 EOF 会表明我已经到达特定文件的末尾。

非常感谢。

4

4 回答 4

2

您可以使用 opencsv 来解析 excel CSV。我自己用过这个,你需要做的就是在';'上分开。空单元格也将被解析。

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

要解析 excelCSV,您可以执行以下操作:

 CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');
于 2012-12-03T07:44:02.917 回答
1

除了其他建议,我会提供Jackson CSV module。Jackson 具有非常强大的数据绑定功能,并且 CSV 模块允许读取/写入 CSV 作为 JSON(或 XML、YAML 和其他支持的格式)的替代方案。因此,除了强大的 CSV-to/from-POJO 绑定之外,您还可以在其他数据格式之间进行转换。

于 2012-12-05T06:14:11.143 回答
0

请有一个流对象来读取 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());
    }

谢谢,

帕万

于 2012-12-03T08:13:40.480 回答
0

假设您有一个字符串形式的 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");
            }
        });
于 2017-10-28T07:38:47.650 回答