2012-04-24 12 views
1

[OK]を私はthis SO questionをチェックしましたが、それはまったく手伝っていません。csvファイルでのフォーマットの問題

ユーザーにcsvファイルを取得する必要があるため、PeopleSoftにエクスポートできます。フィールドの1つ(batch_id)は正確に4桁でなければならず、現在のところ、Excelは先行ゼロを削除し続けます。私もTextPadでcsvファイルを開いて、そのゼロがなくなっていることを確認しました。

だから、HERESにプロセス:

ブラウザは、以下のように/バッチ/コースをmyappのために指摘されています

@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属性はそのStringを受け取り、Excelがそれを処理し、ファイルがダウンロードされるようにします。

カンマの後にタブを追加することで4桁の数字が表示されますが、PeopleSoftに読み込まれると爆弾が表示されます。一重引用符(1つの先頭引用符、または全体のbatch_idを引用符で囲む)を引用すると正しい4桁の数字が表示されますが、もう一度PeopleSoftのアップロードの問題が発生します。

さらに詳しい情報:私は、このような(しかし、ループ内)などのデータを追加しています:

NodeList participants = XmlUtil.selectNodeList(doc, "Batch/row"); 
    buffer.append("\t" + item.getAttribute("batchid")); 

誰もがExcelが正しく動作するように取得する方法任意のアイデアを持っていますか?

編集:それ以外の場合は機能するので、解決策をマークしました。今の私のようにデータをExcelに吐き出すのはちょっとしたことなので、別の方法で書き直すつもりです。

答えて

0

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

次のようにします。

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

0

ファイルをローカルに保存し、TextPadで直接開くと、先行するゼロがそこにあります。

ExcelでCSVファイルを開かないでください。 Excelはそれを再フォーマットし、先頭のゼロを削除します。

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

Excelで正しく開くには、Excel用に設計された形式を使用します。 XLSファイルまたはXLSXファイルをダウンロードさせます。 Apache POI http://poi.apache.org/spreadsheet/quick-guide.htmlのような図書館は、始めるのに適しています。

+0

この場合、先行するゼロは存在しません。私はチェックしました。メソッドのヘッダーをtext/plainに変更し、ファイル拡張子を.txtに変更すると、拡張子を前後に何度変更しても、ゼロがそこにあります。 これは、データをExcelに取得するための短時間で汚れた解決策であると考えられていましたが、おそらくそれはうまくいかないようです。 – Corwin01