如何解决通过 Java 中的 Android 应用程序以编程方式移动到 .csv 文件中单元格内的新行
我正在从我的 Android 应用程序创建一个 .csv 文件并以 .csv 格式存储数据。但是,当特定单元格的值的长度超过一定数量的字符时,它会离开该单元格并移动到朝向第一列的全新行。如何在同一个单元格内显示?
这是我用来从我的 android 应用程序以 .csv 格式创建和保存数据的代码。
NaN
下面是我在 Excel 中打开 csv 文件时得到的输出截图
当文本太长或有换行符 (\n) 时,来自 Column3 的文本将移动到 Column1 和后续行。如何修复它并仅将其显示在同一个单元格中,即 Column3?
第二张图片显示了当我在变量上使用双引号将数据附加到我的 csv 文件时的新输出。
解决方法
你需要了解它们之间的区别
"\n" + "\"" + flightnumber + "\""
和
"\n" + "\"" + "flightnumber" + "\""
"\n" + "\"flightnumber\""
"\n\"flightnumber\""
为了更好的可读性,并且由于 StringBuilder
已经用于连接字符串,这里的所有内容都在单独的一行中:
data.append("Flight Number");
data.append(',');
data.append("Departure Date");
data.append(',');
data.append("Comments");
data.append('\n');
// ...
data.append(flightNumber);
data.append(',');
data.append(departureDate);
data.append(',');
data.append('"' + pre_comments_consolidated + '"');
注意事项:
- 将单个字符放在单引号中:
'\n'
、'a'
、'b'
、'c'
- 您不必在单引号内转义双引号,反之亦然:
"'"
,'"'
- 您可以连接字符和字符串:
"example" + '\n'
- 您正在将文字双引号与变量
pre_comments_consolidated
连接起来。
如果 CSV 值 包含引号,这将无法正常工作。你需要CSV-escape他们。您应该考虑将所有这些逻辑放在一个单独的函数中。
private String escapeCsv(String in) {
// Double double quotes that are already part of the value.
String out = in.replace("\"","\"\"");
// Wrap the whole thing in double quotes.
return '"' + out '"'
}
像这样使用:
data.append(escapeCsv(pre_comments_consolidated));
注意
- 需要哪些引号来表示 Java 字符串,
- 您需要逐字打印哪些引号,
- 哪些引号需要转义(在 Java 中或在行中的格式,如 CSV)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。