- PR -

CSV出力

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-03-03 03:58
>1.DBと接続し、検索条件に合致する値をとってくるところまでは
>  できたのですが、それをCSV形式に変換する方法が分かりません。
CSV形式というものがどのような形式であるかはご存じでしょうか?
ご存じでなければまずスプレッドシートで適当な表を作ってCSV形式で保存して確認してみましょう。
基本は簡単ですが、いくらか例外的なルール(値にカンマやダブルクオーテーションを含む場合)がありますのでそれに対応する必要があるかどうかを見極めましょう。
対応する必要があれば文字列操作でうまいこと対応をこころみてみましょう。またはオープンソースのユーティリティを探してみるのも良いでしょう。
わからなければ文字列操作のコーディングのレベルで質問ができると思います。

>2.CSV形式に変換できたものをJSP側に渡す方法が分かりません。
必ずしも JSP に渡す必要はありませんが、多くの場合サーブレットから JSP へは HttpServletRequest.set|getAttribute() メソッドを利用して値の受け渡しを行います。
まずは簡単なサーブレット -> JSP の流れを持つプログラムを作ってみましょう。
実際に手を動かしてからであれば「CSVデータの JSP の受け渡し」等ではなく、もう少し細かい粒度の質問ができると思います。
未記入
会議室デビュー日: 2005/03/02
投稿数: 5
投稿日時: 2005-03-03 08:54
インギ様、アドバイスありがとうございます。
CSV形式につきましては参考書等を見て勉強致しました。
少しずつではありますが、コードが作れそうな気がしてきましたので、
自分でいろいろと作ってみて、それでも不明な点があれば、
もう少し突っ込んだ形での質問をさせて頂きたいと思います。

今までご回答頂いた皆様、誠にありがとうございました。
今後は、プログラムの勉強はもちろんですが、自分が聞きたいことを相手に
いかに分かりやすく伝えるか、という文章を作成する能力も身に付けるよう
日々精進して行きたいと思います。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-03-03 10:19
普通に考えると、Strutsを使用しての旨みを使いつつご希望の
機能を実現するよりは、普通にresponseに入れて返してしまう
ケースの方が簡単ですかね。

こういう時って、いくつか考慮点があると思うんですけど
・CSVに出す結果は画面と必ず同一か?
 ->最新の情報ではない。どこかに検索結果のキャッシュが必要
・CSVに出す結果は必ず最新か?
 ->画面表示での結果と異なるケースがある。再度DBから取ってくる。

通常は後者なんですかねぇ。

前者であればキャッシュする仕組みを考えなければならいですね。
むりやりStrutsと合わせると、画面表示、例えばTableに入っている
各種要素を自動的に配列にマッピングしてActionFormのメンバとし
て生成してくれるようなタグライブラリないんでしたっけ?
# Strutsは詳しくありません

後者であれば、やはりスマートに検索ロジック流用でレスポンスに
CSVを返してあげるだけでしょうか。

[ メッセージ編集済み 編集者: (株)ぽち 編集日時 2005-03-03 10:20 ]
zakk
会議室デビュー日: 2003/11/20
投稿数: 1
投稿日時: 2005-03-04 20:43
つい1ヶ月ほど前、実は自分も似たような事がしたくて、ネットで探していました。
すると・・・身近なところで見つかるものですね。
@ITのJava TIPSにありました。

  → http://www.atmarkit.co.jp/fjava/javatips/028jspservlet019.html

おそらくこれが参考になるかと思います。
お互い頑張っていきましょうね。
ピンクの恐竜
常連さん
会議室デビュー日: 2005/02/01
投稿数: 42
投稿日時: 2005-03-06 02:50
もう解決されているとは思いますが、
私も少し前に似たようなPGを作成しましたので、
そこでの注意ポイントを少し記述させていただきます。

もし対象ブラウザがIEならStrutsを使ってCSV出力は出来ないと思います。
(出来なかったのが私だけならごめんなさい)

ここの過去の掲示板でも討論されていたことですがIEは帰ってきた
レスポンスがCSVファイルかどうかはレスポンスのヘッダー部を見ないで
リクエストのURLの最後を見て判断するそうです。
要はURLのパスの最後を*.csvにしないとcsvファイルとして認識
してくれないらしいです。
ところがサーブレットをStrutsにすると
URLのパスの最後を*.doにしないといけないと思います。

ですので私は結局Strutsを使わないで作成しました。

参考までに。
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2005-03-06 03:36
蛇足な上に、推測だけなので申し訳ないのですが、フっと思ってしまったので。

引用:

ピンクの恐竜さんの書き込み (2005-03-06 02:50) より:
ここの過去の掲示板でも討論されていたことですがIEは帰ってきた
レスポンスがCSVファイルかどうかはレスポンスのヘッダー部を見ないで
リクエストのURLの最後を見て判断するそうです。
要はURLのパスの最後を*.csvにしないとcsvファイルとして認識
してくれないらしいです。
ところがサーブレットをStrutsにすると
URLのパスの最後を*.doにしないといけないと思います。



*.csvもStrutsのActionServletにマッピングすれば行けたりはしないですか・・・?
ピンクの恐竜
常連さん
会議室デビュー日: 2005/02/01
投稿数: 42
投稿日時: 2005-03-06 17:28
引用:

*.csvもStrutsのActionServletにマッピングすれば行けたりはしないですか・・・?



試してないですが行けそうな気がします。
と言うよりも行けると思います。

全く考えにありませんでした。

頭の固い自分が情けないです・・・。m(_ _)m
わんこ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 46
投稿日時: 2005-03-07 13:34
Struts使っていてもできますよ

Action内でレスポンスに返してあげれば。

私はバリバリ使ってます

[ メッセージ編集済み 編集者: わんこ 編集日時 2005-03-07 13:36 ]

スキルアップ/キャリアアップ(JOB@IT)