2016-07-27 63 views
4

我需要一個解決方案..問題是在csv文件產品價值用雙引號saperated所以我的代碼無法讀取完整的產品價值其唯一的閱讀「馬林 - 12」,但完整的產品名字是「Marlin - 12」「 - 自定義」。使用讀取csv文件無法讀取雙引號csv

PRODUCT_ID,CATEGORY,PRODUCT, MIN_STOCK_LEVEL 
23,   cat1, "Marlin - 12"" - Custom",2 
24,   cat1, "Marlin - 12"" – Custom1",3 
25,   cat2, "Marlin - 12"" – Custom2",3 
26,   cat3, "Marlin - 12"" – Custom3",2 
27,   cat4, "Marlin - 12"" - Custom",2 
28,   cat5, "Marlin - 12"" - Custom",2 

代碼IM是

import com.Ostermiller.util.CSVParser 

... 

else if (fileName.contains(".csv")) { 
    FileInputStream fis = new FileInputStream(fileName); 
    CSVParser csvp = new CSVParser(fis); 
    String[][] values = csvp.getAllValues(); 
    tempClientProductCol = new ClientProductCol(); 
} 

回答

2

CSV格式似乎是在RFC 4180指定的。根據Ostermiller site,你將不得不使用Excel風格。記錄如何在那裏使用它。您最終會使用ExcelCSVParser

+0

不知道爲什麼,這是下跌表決,因爲它似乎對我來說:-) – spa

+0

是我的,我以爲你建議一個包含此解析器的新庫,我添加了鏈接到javadoc來澄清(並能夠刪除downvote)。 ':)' –

+0

也測試和工作很好,所以刪除我的解決方法的答案 –

-1

當您將值設置爲你的POJO這不是CSV文件或CSVParser..It happend問題.. 這裏的工作代碼

FileInputStream fis = new FileInputStream("path.csv"); 
CSVParser csvp = new CSVParser(fis); 
String[][] values = csvp.getAllValues();  
System.out.println(values[1][2]);