1

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を正しく動作させる方法を知っている人はいますか?

編集:それ以外の場合は機能するため、解決策をマークしました。今の自分のようにエクセルにデータを吐き出そうとするのはただのくだらないので、別の方法で書き直すだけです。

4

2 に答える 2

0

ゼロを失うことなく、そのファイルを Excel で開くことができます。

次のようにします。

1 - Excel を開きます。2 - [ファイル] -> [インポート] をクリックし、Excel で表示する CSV ファイルを選択します。3 - 区切り記号付きを選択し、[次へ] をクリックします。4 - 区切り文字としてカンマを選択し、[次へ] をクリックします。5 - 左側のゼロを失いたくない列で、列データをテキストとしてマークします。6 - 終了。

于 2012-04-25T01:31:22.243 に答える
0

ファイルをローカルに保存し、TextPad で直接開くと、先頭のゼロが表示されます。

CSV ファイルを Excel で開かないでください。Excel によって再フォーマットされ、先頭のゼロが取り除かれます。

自分で試して、TextPad で簡単な CSV ファイルを手動で作成し、保存してから Excel で開きます。先頭のゼロは取り除かれます。

Excel で正しく開く必要がある場合は、Excel 用に設計された形式を使用してください。ユーザーに XLS ファイルまたは XLSX ファイルをダウンロードしてもらいます。Apache POI http://poi.apache.org/spreadsheet/quick-guide.htmlのようなライブラリは、開始するのに適した場所です。

于 2012-04-25T01:19:31.697 に答える