我有一個CSV文件(excel)裏面有數據,我需要使用java解析數據。 這些文件中的數據不使用逗號分隔,CSV文件具有寫入所有數據的列數和行數(每個單元都有數據)。 我需要通過所有的文件,直到我到達每個文件的EOF(文件結尾)並解析數據。 該文件還包含空行,因此空行不是停止解析的標準,我認爲只有EOF將表明我已達到特定文件的末尾。如何解析Java中的CSV(excel,不以逗號分隔)文件?
非常感謝。
我有一個CSV文件(excel)裏面有數據,我需要使用java解析數據。 這些文件中的數據不使用逗號分隔,CSV文件具有寫入所有數據的列數和行數(每個單元都有數據)。 我需要通過所有的文件,直到我到達每個文件的EOF(文件結尾)並解析數據。 該文件還包含空行,因此空行不是停止解析的標準,我認爲只有EOF將表明我已達到特定文件的末尾。如何解析Java中的CSV(excel,不以逗號分隔)文件?
非常感謝。
您可以使用opencsv解析excel的CSV。我自己使用這個,你所需要做的就是拆分';'。空單元格也將被解析。
你可以在這裏找到的信息:http://opencsv.sourceforge.net/
並解析excelCSV你可以這樣做:
CSVReader reader = new CSVReader(new FileReader("yourfile.csv"), ';');
Rafael,我如何加載我從sourceforge下載的源代碼(庫)?謝謝 – user1864229
@ user1864229就像你會圖書館一樣?將其放入該項目的庫文件夾中。 – Lyrion
是否有我需要使用的特定文件/文件夾? – user1864229
請有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());
}
感謝,
帕
http://stackoverflow.com/questions/101100/csv-api-for-java – Pavan
Pavan,如果我的工作表中沒有逗號,它會工作嗎? – user1864229
來自[StringTokenizer](http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html):'StringTokenizer是一個遺留類,由於兼容性原因而被保留,儘管它的使用是不鼓勵的在新代碼中。建議任何尋求此功能的人使用String或java.util.regex包的拆分方法 –
除此之外,我會提供Jackson CSV module。 Jackson具有非常強大的數據綁定功能,CSV模塊允許以CSV格式作爲JSON(或XML,YAML和其他支持的格式)的替代方式進行讀取/寫入。因此,除了強大的CSV到/從POJO綁定之外,您還可以在其他數據格式之間進行轉換。
假設你有字符串形式的CSV fileContent:
String fileContent;
通常,CSV fileContent被解析成列表>。
final List<String> rows = new ArrayList<String>(Lists.newArraysList(fileContent.split("[\\r\\n]+")));
分割文件爲行列表。 然後使用OpenCSV的CSVParser並解析逗號分隔線進入名單
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");
}
});
嘗試http://opencsv.sourceforge.net/ – onon15
這會是很難幫助,如果你不告訴我們什麼yoou已經試過嗎?如果文件不是以逗號分隔的,那麼由哪個其他字符?「;」 「標籤」等? – Romczyk
請編輯你的文章,並添加一些示例輸入(縮進4個空格,使他們固定寬度) –