Java csv文件的格式问题

Java csv文件的格式问题,java,excel,csv,jersey,jax-rs,Java,Excel,Csv,Jersey,Jax Rs,好的,我查过了,但对我一点帮助都没有 我需要获得一个csv文件给用户,这样他们就可以将其导出到PeopleSoft。其中一个字段batch_id必须精确为4位数字,并且当前Excel不断删除这些前导零。我还在TextPad中打开了csv文件,并验证了这些零是否消失了 因此,过程如下: 浏览器指向myapp/Batch/course,如下所示: @GET @Path( "Batch/{course}" ) @Produces( "application/vnd.openxm

好的,我查过了,但对我一点帮助都没有

我需要获得一个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形式发送回的数据,批处理id的位数正确。然后通过StringBuffer.append将该XML处理为一个逗号分隔的长字符串,然后该方法返回该字符串。@products属性获取该字符串并确保Excel处理该字符串,然后下载该文件

我可以通过在每个逗号后添加制表符使其显示为4位数字,但当加载到PeopleSoft时,它会爆炸。我也可以让它以正确的4位数字显示,如果我引用一个前导单引号,或引用整个批次id,但同样存在PeopleSoft上载的问题

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

    NodeList participants = XmlUtil.selectNodeList( doc, "Batch/row" );
    buffer.append( "\t" + item.getAttribute( "batchid" ) );
有人知道如何让Excel正常工作吗


编辑:我标记了一个解决方案,因为在任何其他情况下它都可以工作。试图像我现在这样将数据输出到Excel只是一个难题,所以我将以另一种方式重写它。

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

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

自己试试看,在TextPad中手工制作一个简单的CSV文件,保存它,然后在Excel中打开它。前导零将被剥离

如果需要在Excel中正确打开,请使用为Excel设计的格式。
让用户下载XLS文件或XLSX文件。ApachePOI之类的库是一个很好的起点。

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

按以下步骤进行:

1-打开Excel; 2-单击-文件->导入,选择要在Excel中查看的CSV文件; 3-选择Delimited并单击Next; 4-选择逗号作为分隔符,然后单击下一步; 5-将列数据标记为不希望丢失左侧零的列上的文本;
6-结束。

在这种情况下,前导零不会出现,我已经检查过了。如果我将方法头更改为text/plain,并将文件扩展名更改为.txt,那么无论我来回更改扩展名多少次,零都存在。这本应是一个快速而肮脏的解决方案,用于将数据导入Excel,但看起来这可能行不通。