OK、この SO questionを確認しましたが、まったく役に立ちませんでした。
PeopleSoft にエクスポートできるように、csv ファイルをユーザーに提供する必要があります。フィールドの 1 つ (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 の桁数は正しいです)。その XML は、StringBuffer.append() を介して 1 つの長いカンマ区切りの文字列に処理され、メソッドはそれを返します。@Produces 属性はその文字列を受け取り、Excel がそれを処理することを確認し、ファイルがダウンロードされます。
各コンマの後にタブを追加することで 4 桁として表示できますが、PeopleSoft に読み込まれると爆発します。一重引用符 (先頭の単一引用符、または batch_id 全体の引用符) を使用すると、正しい 4 桁で表示されるようにすることもできますが、ここでも PeopleSoft のアップロードの問題があります。
詳細情報: データをそのまま追加しています (ただしループ内):
NodeList participants = XmlUtil.selectNodeList( doc, "Batch/row" );
buffer.append( "\t" + item.getAttribute( "batchid" ) );
Excelを正しく動作させる方法を知っている人はいますか?
編集:それ以外の場合は機能するため、解決策をマークしました。今の自分のようにエクセルにデータを吐き出そうとするのはただのくだらないので、別の方法で書き直すだけです。