您可以编写一个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
谁能告诉我怎么能解决这个问题?
答案 0 :(得分:1)
你确定文件写错了,你不只是在Excel中打开它,将这些解释为数字,从而失去前导零?尝试在文本编辑器中打开它。
答案 1 :(得分:1)
如果您写入System.out而不是
Operator name,Telephone Number,Op1012365479Op209746
正如你所看到的那样,0就是你所期望的。也许问题是你在字段之间没有,
。
如果使用excel打开这样的文件,它将删除前导0,因为它假定它是一个数字。为避免这种情况,您需要在字段周围使用双引号,以便将其视为文本。
答案 2 :(得分:0)
在文本编辑器中读取文件,我的猜测是它有零,读取的是它认为它是一个数字。试着把引号括起来。
pw.print( “\” 012365479 \ “”);