好的,我已经检查了这个 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 处理为一个用逗号分隔的长字符串,然后该方法返回该字符串。@Produces 属性获取该字符串并确保 Excel 处理它,并下载文件。
我可以通过在每个逗号后附加制表符来让它显示为 4 位数字,但是当它加载到 PeopleSoft 时它会爆炸。如果我单引号它(单个前导引号或引用整个batch_id),我也可以让它以正确的4位数字出现,但同样存在PeopleSoft上传的问题。
更多信息:我正在附加数据(但在循环中):
NodeList participants = XmlUtil.selectNodeList( doc, "Batch/row" );
buffer.append( "\t" + item.getAttribute( "batchid" ) );
有谁知道如何让 Excel 正常运行?
编辑:我标记了一个解决方案,因为在任何其他情况下它都会起作用。像我现在这样尝试将数据吐出到 Excel 只是一个杂物,所以我将用不同的方式重写它。