使用csv文件格式化问题

好的,我已经检查了这个问题 ,但是它一点都没有帮到我。

我需要获得一个CSV文件给用户,所以他们可以将其导出到PeopleSoft。 其中一个字段(batch_id)必须为4位数字,并且当前Excel不断删除这些前导零。 我也在TextPad中打开了csv文件,并validation了那些零不见了。

所以inheritance过程:

浏览器指向myapp / Batch / course,如下所示:

@GET @Path( "Batch/{course}" ) @Produces( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ) @HttpHeader( values="Content-Disposition=attachment;filename=Batch.csv" ) public String getNextBatch ( @PathParam( "course" ) String course ) { ... } 

在该方法中,查询Oracle数据库并将数据作为XML发回(在XML中,batch_id的位数是正确的)。 然后,该XML通过StringBuffer.append()处理成一个逗号分隔的长string,然后该方法返回。 @Produces属性使用该string,并确保Excel处理它,并下载文件。

我可以通过在每个逗号后添加制表符来使其显示为4位数字,但是当它加载到PeopleSoft时会popup。 我也可以得到它正确的4位数字,如果我单引号(无论是单引号或引用整个batch_id),但又是PeopleSoft上传的问题。

更多信息:我正在附加数据(但在一个循环):

  NodeList participants = XmlUtil.selectNodeList( doc, "Batch/row" ); buffer.append( "\t" + item.getAttribute( "batchid" ) ); 

有没有人有任何想法如何让Excel的行为正确?

编辑:我标记了一个解决scheme,因为在任何其他情况下,它会工作。 试图将数据吐出到Excel就像我现在只是一个杂凑,所以我只是要改写它不同的方式。

您可以在Excel中打开该文件,而不会丢失零。

做如下:

1 – 打开Excel; 2 – 单击 – 文件 – >导入并select要在Excel中查看的CSV文件; 3 – select分隔符并单击下一步; 4 – select逗号作为分隔符,然后单击下一步; 5 – 在列上标记列数据为文本,不想丢失左边的零; 6 – 完成。

将文件保存在本地,然后直接用TextPad打开它,前导零将在那里。

不要在Excel中打开CSV文件。 Excel将重新格式化并去除前导零。

尝试一下,在TextPad中手动创build一个简单的CSV文件,保存它,然后在Excel中打开它。 前导零将被剥离。

如果您需要在Excel中正确打开它,请使用为Exceldevise的格式。 让用户下载一个XLS文件或XLSX文件。 像Apache POI这样的库http://poi.apache.org/spreadsheet/quick-guide.html是一个很好的开始。