Java csv文件无法写入像012365479这样的字符串

时间:2012-01-04 09:11:21

标签: java

您可以编写一个java代码将输出写入csv文件。这是示例代码:

File downloadPlace = new File(realContextPathFile, "general");
File gtwayDestRateFile = new File(downloadPlace, (new StringBuilder("ConnectionReport")).append(System.currentTimeMillis()).append(".csv").toString());
PrintWriter pw = new PrintWriter(new FileWriter(gtwayDestRateFile));

pw.print("Operator name,");
pw.print("Telephone Number,");
pw.print("Op1");
pw.print("012365479");
pw.print("Op2");
pw.print("09746");
pw.close();
p_response.setContentType("application/octet-stream");
p_response.setHeader("Content-Disposition", (new StringBuilder("attachment; filename=\"")).append(gtwayDestRateFile.getName()).append("\"").toString());
FileInputStream fis = new FileInputStream(gtwayDestRateFile);
byte buf[] = new byte[4096];
ServletOutputStream out = p_response.getOutputStream();
do
{
    int n = fis.read(buf);
    if(n == -1)
       break;
    out.write(buf, 0, n);
} while(true);
fis.close();
out.flush();

在这两种情况下输出都是这样的:12365479而不是012365479
和9746而不是09746
谁能告诉我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:1)

你确定文件写错了,你不只是在Excel中打开它,将这些解释为数字,从而失去前导零?尝试在文本编辑器中打开它。

答案 1 :(得分:1)

如果您写入System.out而不是

Operator name,Telephone Number,Op1012365479Op209746

正如你所看到的那样,0就是你所期望的。也许问题是你在字段之间没有,

如果使用excel打开这样的文件,它将删除前导0,因为它假定它是一个数字。为避免这种情况,您需要在字段周围使用双引号,以便将其视为文本。

答案 2 :(得分:0)

在文本编辑器中读取文件,我的猜测是它有零,读取的是它认为它是一个数字。试着把引号括起来。

pw.print( “\” 012365479 \ “”);