Java 写入CSV文件时,超过15位的数字将转换为0

Java 写入CSV文件时,超过15位的数字将转换为0,java,string,csv,numeric,Java,String,Csv,Numeric,我必须准备一个包含数据和逗号的字符串。然后使用java.util.zip.ZipEntry将该字符串写入csv文件 现在的问题是:它适用于长度小于或等于15的数字 对于长度超过15位的数字数据,将转换为0 因此,我尝试使用双引号将数字数据括起来,将数字数据转换为字符串,以避免这个问题。但这是行不通的 ZipEntry ze = new ZipEntry("my.csv"); ByteArrayOutputStream ba = new ByteArrayOutputStream(); ZipOu

我必须准备一个包含数据和逗号的字符串。然后使用java.util.zip.ZipEntry将该字符串写入csv文件

现在的问题是:它适用于长度小于或等于15的数字

对于长度超过15位的数字数据,将转换为0

因此,我尝试使用双引号将数字数据括起来,将数字数据转换为字符串,以避免这个问题。但这是行不通的

ZipEntry ze = new ZipEntry("my.csv");
ByteArrayOutputStream ba = new ByteArrayOutputStream();
ZipOutputStream zo = new ZipOutputStream(ba);
zo.putNextEntry(ze);
String csv = "123456789012345,12345678901234567890,\"hello\",";

zo.write(csv.getBytes());
zo.closeEntry();

有人能对此提出建议吗?

只是猜测一下:您正在MS Excel中打开生成的csv

使用文本编辑器检查文件


有一个bug报告说:

将代码添加到问题中。数字从0到15这一事实可以给你一个提示。问题出在哪里?Java是否发送了错误的号码,或者您用来打开CSV文件的程序是否错误?如果是后者,请尝试使用记事本打开CSV,并检查数字是否正确。同时张贴你的密码。你用什么号码?最大长度为15并不意味着什么。您如何查看您的文件?数字的长度怎么会有问题?你甚至没有把这个字符串转换成一个数字!也许您应该显示代码,您实际上正在将该字符串转换为数字!