2014-07-02 47 views
0

我有这个CSV:CSV读卡器空值Java

0,102000082,,2,125,'Battery location','Left-hand drive',2,2 
0,300000029,102000082,3,895,'Behind the cab','Left',2,-7 
0,102000082,,4,127,'Battery location','Right-hand drive',4,4 
      ^----- 

我用csvReader映射到一个bean

public static List<BatteryBean> loadAndRead{ 
    File csvFilename = new File("C:\\my.csv"); 
    CSVReader csvReader = new CSVReader(new FileReader(csvFilename)); 

    ColumnPositionMappingStrategy strat = new ColumnPositionMappingStrategy(); 
    strat.setType(BatteryBean.class); 
    String[] columns = new String[] { "ktypnr","sentenceId","parentId","sortOrder", "adjItemNoteId","sentText","itemNoteText","parentSortOrder1","parentSortOrder10" }; 
    strat.setColumnMapping(columns); 
    CsvToBean csv = new CsvToBean(); 
    List<BatteryBean> list = csv.parse(strat, csvReader); 
    return list; 
} 


public static void main(String[] args) { 

    try { 
     List<BatteryBean> list = loadAndRead("C:\\work\\battery_report_raw.csv"); 

     for (Object object : list) { 
      BatteryBean bb = (BatteryBean) object; 
      System.out.println(bb.getKtypnr()); 
     } 
    } 

所以问题是,该文件包含之间空字符串,,我在分析得到exeption:java.lang.NumberFormatException:

所致对于输入字符串: “”

我解决了。我还有一个问题

Csv file 
ktypnr sentence_id parent_id sort_order adj_item_note_id  sent_text    iem_note_text 
0   102000082     2     125    Battery location' Left-hand drive' 
0   300000029 102000082  3     895    Behind the cab'  Left' 
0   102000082     4     127    Battery location'  Right-hand drive' 
0   300000029 102000082  5     898    Behind the cab'  Right' 

所以,如果一个sentence_id =一个PARENT_ID我要结合这两个,这样看起来是这样的(例如第一线和第二线),但我还应该考虑SORT_ORDER:

0, Battery location, Left-hand drive, Behind the cab, Left 

我不知道如何进行

+1

更改你的bean,使它是一个字符串? –

+1

明显的例外。你还在期待什么? –

+0

是的,更改为一个字符串,然后我会做一个解析,如果它不是null。 – alex1111

回答

1

更改parentIdString BatteryBean中的数据类型。看起来它是整数。