我正在编写一种方法,一次读取一个csv文件,一次读取一个单元格,在某些情况下执行一些处理,最后生成一个新的CSV文件。
问题是,如果单元格被双引号引起来,我不知道如何在新产生的文件中标识和包围它。
例如,使用此输入文件:
Michelle,“文本不包含逗号”,主要内容
米歇尔,“文本,包含逗号”,主要
我的方法产生:
Michelle,文本不包含逗号,主要内容
米歇尔,文本,包含逗号,主语
我的代码:
public static InputStream checkForXslsFunctions(InputStream inputStream, char[] spChars) throws IOException {
CSVReader csvReader = new CSVReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String[] line;
String stringAsChar = new String(spChars);
while ((line = csvReader.readNext()) != null) {
for (String cell : line) {
if (((Arrays.asList(stringAsChar.split(""))).stream().anyMatch(s -> cell.startsWith(s)))) {
stringBuilder.append(APOSTROPHE);
}
stringBuilder.append(cell).append(COMMA);
}
stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(COMMA));
stringBuilder.append(System.getProperty("line.separator"));
}
byte[] bytes = stringBuilder.toString().getBytes();
return new ByteArrayInputStream(bytes);
}
此外,我还尝试使用:
final CSVParser parser =
new CSVParserBuilder()
.withSeparator(',')
.withIgnoreQuotations(true)
.build();
final CSVReader reader =
new CSVReaderBuilder(csvStreamReader)
.withSkipLines(0)
.withCSVParser(parser)
.build();
但是它给出了相同的结果。非常感谢您提供任何解决方案。