带逗号的 OpenCSV 字段
OpenCSV fields with commas
我正在创建一个 csv,其中的字段可能包含逗号。在java中,写入是用opencsv完成的。
try (Writer fileWriter = Files.newBufferedWriter(Paths.get(filePath))) {
CSVWriter csvWriter =
new CSVWriter(
fileWriter,
ICSVWriter.DEFAULT_SEPARATOR,
ICSVWriter.NO_QUOTE_CHARACTER,
ICSVWriter.DEFAULT_ESCAPE_CHARACTER,
ICSVWriter.DEFAULT_LINE_END);
csvWriter.writeNext(headers);
csvWriter.writeAll(rows);
} catch (IOException e) {
throw new IOException(e);
}
所以像 ["field, 1", "field, 2", "field, 3"]
这样的字段我希望得到一个带有 "field, 1", "field, 2", "field, 3"
的专栏,但我得到 field", 1,field", 2,field", 3
.
在实际中,在 excel 中打开时逗号消失了,正如预期的那样,不会显示引号。我在 opencsv 上没有看到任何相关文档。
除了 ICSVWriter.NO_QUOTE_CHARACTER
之外,一切看起来都不错。通过将 NO_QUOTE_CHARACTER
作为参数传递,您要求 OpenCSV 将引号视为文件中的常规文本,这就是它正在做的事情。
如果您确信双引号将成为您的引号字符,您可以将其更改为 ICSVWriter.DEFAULT_QUOTE_CHARACTER
最后您的代码段如下所示:
try (Writer fileWriter = Files.newBufferedWriter(Paths.get(filePath))) {
CSVWriter csvWriter =
new CSVWriter(
fileWriter,
ICSVWriter.DEFAULT_SEPARATOR,
ICSVWriter.DEFAULT_QUOTE_CHARACTER,
ICSVWriter.DEFAULT_ESCAPE_CHARACTER,
ICSVWriter.DEFAULT_LINE_END);
csvWriter.writeNext(headers);
csvWriter.writeAll(rows);
} catch (IOException e) {
throw new IOException(e);
}
我正在创建一个 csv,其中的字段可能包含逗号。在java中,写入是用opencsv完成的。
try (Writer fileWriter = Files.newBufferedWriter(Paths.get(filePath))) {
CSVWriter csvWriter =
new CSVWriter(
fileWriter,
ICSVWriter.DEFAULT_SEPARATOR,
ICSVWriter.NO_QUOTE_CHARACTER,
ICSVWriter.DEFAULT_ESCAPE_CHARACTER,
ICSVWriter.DEFAULT_LINE_END);
csvWriter.writeNext(headers);
csvWriter.writeAll(rows);
} catch (IOException e) {
throw new IOException(e);
}
所以像 ["field, 1", "field, 2", "field, 3"]
这样的字段我希望得到一个带有 "field, 1", "field, 2", "field, 3"
的专栏,但我得到 field", 1,field", 2,field", 3
.
在实际中,在 excel 中打开时逗号消失了,正如预期的那样,不会显示引号。我在 opencsv 上没有看到任何相关文档。
除了 ICSVWriter.NO_QUOTE_CHARACTER
之外,一切看起来都不错。通过将 NO_QUOTE_CHARACTER
作为参数传递,您要求 OpenCSV 将引号视为文件中的常规文本,这就是它正在做的事情。
如果您确信双引号将成为您的引号字符,您可以将其更改为 ICSVWriter.DEFAULT_QUOTE_CHARACTER
最后您的代码段如下所示:
try (Writer fileWriter = Files.newBufferedWriter(Paths.get(filePath))) {
CSVWriter csvWriter =
new CSVWriter(
fileWriter,
ICSVWriter.DEFAULT_SEPARATOR,
ICSVWriter.DEFAULT_QUOTE_CHARACTER,
ICSVWriter.DEFAULT_ESCAPE_CHARACTER,
ICSVWriter.DEFAULT_LINE_END);
csvWriter.writeNext(headers);
csvWriter.writeAll(rows);
} catch (IOException e) {
throw new IOException(e);
}