代码成功写入CSV,但写入一个单元格中的每一行。
例如:
hămăit, hămăit, SUBST, 98226, 98226, null, ron, n
hămăit, hămăit, SUBST, 2, 98226, nom-sg, ron, n
上面的例子被正确地分成了几行,但每行只是一个单元格,没有用逗号分隔。
这是文本在写入csv之前的外观:
[hămăit, hămăit, SUBST, 98226, 98226, null, ron, {{n}}, hămăit, hămăit, SUBST, 2, 98226, nom-sg, ron, {{n}}, ...
下面是我的代码。
public String escapeSpecialCharacters(String data) {
String escapedData = data.replaceAll("\\R", " ");
escapedData = escapedData.replaceAll("\\{", "");
escapedData = escapedData.replaceAll("}", "");
return escapedData;
}
public String convertToCSV(WordDictObj data) {
String[] strings = data.returnStringArray();
return Stream.of(strings)
.map(this::escapeSpecialCharacters)
.collect(Collectors.joining(","));
}
public void givenDataArray_whenConvertToCSV_thenOutputCreated() throws IOException {
OutputStream csvOutputFile = new FileOutputStream("parseOutPut.csv");
try (PrintWriter pw = (new PrintWriter(csvOutputFile, true, StandardCharsets.UTF_8))) {
dataLines.stream()
.map(this::convertToCSV)
.forEach(pw::println);
}
}
我检查了一下,它在google工作表中和在我的IDE中以CSV格式查看时都很好用(我选择逗号作为值分隔符)。显然它只是在excel中不起作用。而且在excel中它不显示特殊字符。
在Google Sheet中是什么样子:
在Notepad++中的外观:
如何在Excel中使用:
1条答案
按热度按时间8wtpewkr1#
在你附上的notepad++截图中,各行看起来完全没问题,事实上,字段之间用逗号隔开了。另外,google sheets看起来也运行得很好。因此,这很可能是excel的问题。
正如g00se在评论中指出的那样,看起来您必须指定编码。