如何在Java中解析CSV(excel,不用逗号分隔)文件?

时间:2012-12-03 07:18:24

标签: java excel parsing csv

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

非常感谢。

4 个答案:

答案 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");
            }
        });