2016-04-04 31 views
0

我試圖從Oracle檢索的某些數據中獲取CSV。我只需編寫csv,使用查詢的結果作爲csv的列。這是我的代碼:Java csv分析器/寫入器

// get data 
    final List<myDto> dataCsv = myDao.getdata(); 

    StringWriter writer = new StringWriter(); 
    CSVWriter csvWriter = new CSVWriter(writer,';'); 

    List<String[]> result = toStringArray(dataCsv); 
    csvWriter.writeAll(result); 
    csvWriter.close(); 

    return Response.ok(result).header("Content-Disposition", "attachment; filename=" + fileName).build();` 

顯然它找不到toStringArray()。但我有沒有建立它?我真的需要它嗎?我如何編輯編輯才能使其工作?

回答

1

如果你只是跟着從你給的鏈接的例子,你會看到他們在做什麼......

private static List<String[]> toStringArray(List<Employee> emps) { 
     List<String[]> records = new ArrayList<String[]>(); 
     //add header record 
     records.add(new String[]{"ID","Name","Role","Salary"}); 
     Iterator<Employee> it = emps.iterator(); 
     while(it.hasNext()){ 
      Employee emp = it.next(); 
      records.add(new String[]{emp.getId(),emp.getName(),emp.getRole(),emp.getSalary()}); 
     } 
     return records; 
    } 

從本質上講,你需要建立一組字符串[] 。每個String []代表CSV的單行數據,每個數組元素都是一個值。所以,是的,您需要從您的數據模型構建一個List並將其傳遞給CSVWriter的writeAll()方法。

列表中的第一個String []是CSV的列標題。後續的字符串數組是數據本身。