2017-05-18 29 views
1
我使用的是單義性

使用下面的代碼結果集以CSV格式轉換爲字符串:設置自定義頁眉使用單義性

StringWriter stringWriter = new StringWriter(); 

    CsvWriterSettings csvWriterSettings = new CsvWriterSettings(); 

    ResultSetMetaData metaData = resultSet.getMetaData(); 

    int columnCount = metaData.getColumnCount(); 

    String headers[] = new String[columnCount]; 

    for (int i = 0; i < columnCount; i++) { 

     headers[i] = metaData.getColumnLabel(i + 1); 

    } 

    for (int i = 0; i < headers.length; i++) { 

     if (fieldMapping != null && fieldMapping.containsKey(headers[i])) { 

      headers[i] = fieldMapping.get(headers[i]); 

     } 
    } 

    csvWriterSettings.setHeaders(headers); 

    csvWriterSettings.setHeaderWritingEnabled(true); 

    if (csvSeparator != null) { 

     csvWriterSettings.getFormat().setDelimiter(csvSeparator.charAt(0)); 

    } 

    if (isQuoteFields) { 

     csvWriterSettings.setQuoteAllFields(true); 
    } 

    if (isCStyleEscape) { 

     csvWriterSettings.getFormat().setQuoteEscape(','); 

     csvWriterSettings.getFormat().setCharToEscapeQuoteEscaping('\\'); 

    } 

    CsvRoutines csvRoutines = new CsvRoutines(csvWriterSettings); 

    csvRoutines.write(resultSet, stringWriter); 

    return stringWriter.toString(); 

我試圖設置自定義頭輸出,但返回輸出始終有一個默認標題。

有什麼辦法可以在輸出csv格式字符串中設置我自己的標題值。

回答

0

這是一個錯誤,我剛剛打開了一個錯誤報告here),所以這將在2.5.0+版本中開箱即用。目前,有它一個解決辦法:

設置標題,你想先:

String headers[] = {"My", "Custom", "Header"}; 
csvWriterSettings.setHeaders(headers); 

寫單行的標題到您的輸出:

CsvWriter headerWriter = new CsvWriter(stringWriter, csvWriterSettings); 
headerWriter.writeRow(headers); 

轉儲ResultSet

CsvRoutines csvRoutines = new CsvRoutines(csvWriterSettings); 
csvRoutines.write(resultSet, stringWriter); 

關閉您爲創建標題而創建的作者:

headerWriter.close(); 

希望這會有所幫助。

+0

感謝您分享解決方法,但它有一個問題。 headerWriter.writeRow(headers)將使用逗號分隔值編寫標題,但如果在csvWriterSettings.getFormat()。setDelimiter()中使用不同的分隔符,則不正確。 – HyperioN