好的,我已经检查了this SO question,但它根本没有帮助我。
我需要向用户提供csv文件,以便将其导出到PeopleSoft。其中一个字段(batch_id)必须是4位数,并且当前Excel不断删除那些前导零。我还在TextPad中打开了csv文件,并验证这些零已经消失了。
所以继续这个过程:
浏览器指向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具有正确的位数)。然后通过StringBuffer.append()将该XML处理为一个长逗号分隔的String,然后该方法返回。 @Produces属性获取该String并确保Excel处理它,并下载文件。
我可以通过在每个逗号后添加制表符使其显示为4位数,但是当它加载到PeopleSoft时会爆炸。如果我单引号(或者引用一个引号,或者引用整个batch_id),我也可以使用正确的4位数来显示它,但同样也是PeopleSoft上传的问题。
更多信息:我正在追加数据(但是在循环中):
NodeList participants = XmlUtil.selectNodeList( doc, "Batch/row" );
buffer.append( "\t" + item.getAttribute( "batchid" ) );
有没有人知道如何让Excel正常运行?
编辑:我标记了一个解决方案,因为在任何其他情况下它都会起作用。试图像我现在一样将数据吐出到Excel只是一个笨蛋,所以我只是以不同的方式重写它。
答案 0 :(得分:0)
在本地保存文件,然后直接用TextPad打开它,前导零将在那里。
不要在Excel中打开CSV文件。 Excel将重新格式化并删除前导零。
自己尝试一下,在TextPad中手工制作一个简单的CSV文件,保存,然后在Excel中打开它。前导零将被剥离。
如果需要在Excel中正确打开,请使用专为Excel设计的格式。 让用户下载XLS文件或XLSX文件。像Apache POI http://poi.apache.org/spreadsheet/quick-guide.html这样的图书馆是一个很好的起点。
答案 1 :(得分:0)
您可以在excel中打开该文件而不会丢失零。
请执行以下操作:
1 - 打开Excel; 2 - 单击 - 文件 - >导入并选择要在Excel中查看的CSV文件; 3 - 选择“分隔”并单击“下一步”; 4 - 选择逗号作为分隔符,然后单击下一步; 5 - 在您不希望丢失左边的零的列中将列数据标记为文本; 6 - 完成。