2016-04-04 13 views
0

Ich versuche, eine CSV von einigen Daten erhalten von Oracle abgerufen. Ich muss nur die CSV schreiben, mit dem Ergebnis der Abfrage als Spalte von CSV. Das ist mein Code:Java csv Parser/Writer

// 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();` 

Offensichtlich kann es toStringArray() nicht finden. Aber muss ich es bauen? Brauche ich es wirklich? Wie muss ich die Bearbeitung bearbeiten, damit sie funktioniert?

Antwort

1

Wenn Sie nur das Beispiel aus dem Link folgen, die Sie gegeben haben, werden Sie sehen, was sie tun ...

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; 
    } 

Im Wesentlichen müssen Sie eine Liste der String [] bauen . Jede Zeichenfolge [] stellt eine einzelne Datenzeile für die CSV dar, wobei jedes Element des Arrays ein Wert ist. Also, ja, Sie müssen eine Liste aus Ihrem Datenmodell erstellen und diese an die writeAll() - Methode des CSVWriter übergeben.

Die erste Zeichenfolge [] in der Liste sind die Spaltenüberschriften für die CSV. Die nachfolgenden String-Arrays sind die Daten selbst.