我在java中使用opencsv库并导出csv。但我有问题。当我使用字符串开头零时,它看起来像:0123456,当我导出它时,删除 0,我的 csv 看起来像:123456。零丢失了。我使用的方式:
"\"\t"+"0123456"+ "\"";
但是当 csv 导出时,它看起来像: "0123456"
。我不想要它。我想要 0123456。我不想从 Excel 进行编辑,因为某些最终用户不知道如何编辑。如何使用打开的 csv 导出 csv 并保留 0 开始字符串。请帮忙
最佳答案
我认为这并不是生成 CSV 时的真正问题,而是 Excel 在通过资源管理器打开时处理数据的方式的问题。
尝试了这段代码,并在文本编辑器(不是 Excel)中查看了 CSV,请注意它显示正确,但在 Excel 中打开时,前导 0 丢失了!
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
// feed in your array (or convert your data to an array)
String[] entries = "0123131#21212#021213".split("#");
List<String[]> a = new ArrayList<>();
a.add(entries);
//don't apply quotes
writer.writeAll(a,false);
writer.close();
如果您确实希望在用户打开 Excel 时看到数字值的前导 0,则每个单元格条目均采用 format ="dataHere" 格式;参见下面的代码:
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"));
// feed in your array (or convert your data to an array)
String[] entries = "=\"0123131\"#=\"21212\"#=\"021213\"".split("#");
List<String[]> a = new ArrayList<>();
a.add(entries);
writer.writeAll(a);
writer.close();
这是现在从 Windows 资源管理器打开 Excel(双击)时 Excel 的显示方式:
但是现在,如果我们在文本编辑器中看到 CSV,并修改了数据以“适合”Excel 查看,它会显示为:
另请参阅链接: format-number-as-text-in-csv-when-open-in-both-excel-and-notepad
关于java - 使用opencsv库导出数据时如何保留零开始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503087/