我正在使用 org.apache.commons.csv.CSVPrinter (Java 8) 來生成一個從 DB RecordSet 開始的 CSV 文本文件。我的數據庫表中有一個描述字段,用戶可以在其中插入他想要的任何內容,例如新行!當我在 Excel 或 Google 電子表格上導入 CSV 時,每行在描述中都有一個換行符,顯然會破壞 CSV 結構。我應該手動替換/刪除這些字符還是有辦法配置 CSVPrinter 以自動刪除它?謝謝大家。F編輯:這里是一個代碼片段: CSVFormat csvFormat = CSVFormat.DEFAULT.withRecordSeparator("\n").withQuoteMode(QuoteMode.ALL).withQuote('"'); CSVPrinter csvPrinter = new CSVPrinter(csvContent, csvFormat); // 準備從數據庫收集的字符串列表。我明確使用 String 數組,因為我需要在將其寫入 CSV 之前對 DB 內容執行一些文本編輯 List fasciaOrariaRecord = new ArrayList(); 時間bandRecord.add(...); 時間bandRecord.add(...); // ... csvPrinter.printRecord (csvHeader); // 更多行... csvPrinter.close();
1 回答

HUH函數
TA貢獻1836條經驗 獲得超4個贊
任何帶有行結尾的值都應該用引號轉義。如果您的 CSV 庫沒有自動為您執行此操作,我建議您使用univocity-parsers。在您的特定情況下,您可以使用一個預先構建的例程將數據庫內容轉儲到 CSV 中。
嘗試這個:
ResultSet resultSet = statement.executeQuery("SELECT * FROM table");
//Get a CSV writer settings object pre-configured for Excel
CsvWriterSettings writerSettings = Csv.writeExcel();
writerSettings.setHeaderWritingEnabled(true); //writes the column names to the output file
CsvRoutines routines = new CsvRoutines(writerSettings);
//use an encoding Excel likes
routines.write(resultSet, new File("/path/to/output.csv"), "windows-1252");
希望這可以幫助。
免責聲明:我是這個庫的作者。它是開源且免費的(Apache 2.0 許可)
添加回答
舉報
0/150
提交
取消