Edw*_*ard 29 java csv file-io opencsv supercsv
我使用下面的Java代码创建了一个CSV文件:
String csv = rs.getString("UPLOAD_FOLDER_PATH")+".csv";
CSVWriter writer = new CSVWriter(new FileWriter(csv));
String [] filevalues = new String[filevaluesarray.size()];
filevalues=filevaluesarray.toArray(filevalues);
writer.writeNext(filevalues);
writer.close();
Run Code Online (Sandbox Code Playgroud)
我收到了CSV文件,但该文件的内容包含不需要的双引号.
例如."ABC", "123", "KDNJ"
我不会从添加这些双引号的地方得到.
Sha*_*oor 47
这对我有用
CSVWriter writer =
new CSVWriter(new FileWriter(csv), ',', CSVWriter.NO_QUOTE_CHARACTER);
Run Code Online (Sandbox Code Playgroud)
Jam*_*ett 15
您应该澄清"不需要的"引号的含义.
我不希望它引用所有内容,只包含包含嵌入式逗号,引号和换行符的字段(引用一切都是不必要的并使我的文件更大),或者
我不想要引用任何内容,并且我知道如果CSV包含嵌入的逗号,引号和换行符,则我的CSV将无效
如果它是第一个选项,那么opencsv不支持这个 - 它要么引用一切,要么什么都不引用.如果您想要一个仅在必要时引用的开源CSV库(如果需要也可以引用所有内容),请查看超级CSV.
如果这是第二个选项,那么请使用Sheldon的答案,但请注意,如果CSV包含嵌入的逗号,引号和换行符,则CSV将无效.
例如,如果我正在读取您的CSV文件,我怎么知道以下实际上只是一个包含2个字段的记录?
P Sherman, 42 Wallaby Way,
Sydney, AUSTRALIA
Run Code Online (Sandbox Code Playgroud)
如果它被正确引用,那将是显而易见的,即
P Sherman, "42 Wallaby Way,
Sydney, AUSTRALIA"
Run Code Online (Sandbox Code Playgroud)
仅供参考,这是与RFC4180(CSV的MIME类型定义)的引用相关的规则.
5 每个字段可能包含也可能不包含在双引号中(但是某些程序,例如Microsoft Excel,根本不使用双引号).如果字段未用双引号括起来,则双引号可能不会出现在字段内.例如:
Run Code Online (Sandbox Code Playgroud)"aaa","bbb","ccc" CRLF zzz,yyy,xxx
6 包含换行符(CRLF),双引号和逗号的字段应括在双引号中.例如:
Run Code Online (Sandbox Code Playgroud)"aaa","b CRLF bb","ccc" CRLF zzz,yyy,xxx
7 如果使用双引号括起字段,则必须通过在其前面加上另一个双引号来转义出现在字段内的双引号.例如:
Run Code Online (Sandbox Code Playgroud)"aaa","b""bb","ccc"
如果您不希望在生成的CSV文件的值中使用引号,则必须通过以下方式创建CSVWriter对象:
CSVWriter writer = new CSVWriter(new FileWriter(filePath),
CSVWriter.DEFAULT_SEPARATOR,
CSVWriter.NO_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
CSVWriter.RFC4180_LINE_END);
Run Code Online (Sandbox Code Playgroud)
关键是CSVWriter.NO_QUOTE_CHARACTER
。您可以自定义其他构造函数参数的值。
归档时间: |
|
查看次数: |
30870 次 |
最近记录: |