簡體   English   中英

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

[英]how can I parse CSV(excel,not separated by comma) file in Java ?

我有一個CSV文件(excel),其中包含數據,我需要使用java解析數據。 這些文件中的數據未使用逗號分隔,CSV文件具有寫入所有數據的列數和行數(每個單元格都有數據)。 我需要遍歷所有文件,直到到達每個文件的EOF(文件結尾)並解析數據。 文件中還包含空行,因此空行不是停止解析的條件,我認為只有EOF會表明我已經到達特定文件的末尾。

非常感謝。

您可以使用opencsv解析excel CSV。 我自己使用了此功能,您需要做的只是在';'上進行拆分。 空單元格也將被解析。

您可以在這里找到信息: http : //opencsv.sourceforge.net/

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

 CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');

除了其他建議,我還將提供Jackson CSV模塊 Jackson具有非常強大的數據綁定功能,並且CSV模塊允許以CSV格式進行讀/寫,以替代JSON(或XML,YAML和其他受支持的格式)。 因此,除了強大的CSV-to / from-POJO綁定之外,您還可以在其他數據格式之間進行轉換。

請具有一個流對象以讀取CSV文件。

FileInputStream fis = new FileInputStream("FileName.CSV");

BufferedInputStream bis =新的BufferedInputStream(fis); InputStreamReader isr =新的InputStreamReader(bis);

讀取inputstream對象並將文件存儲在String對象中。

然后,使用StringTokenizer,以[[逗號]作為分隔符->,您將獲得令牌。請操縱令牌以獲取值。

String str = "This is String , split by StringTokenizer, created by mkyong";

StringTokenizer st =新的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 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");
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM