• 締切済み

Web上に表示されたデータをcsvでローカルに落としたい!

今JavaでWebアプリの開発を行っています。 DBと接続し、データをWeb上に表示させる機能と、 その表示されたものを、csvファイルとしてローカルに保存できるようにしたいのですが、 何かよい方法がありましたら、是非教えてください! データは動的なのでその都度csvファイルの内容も変わってきます。

みんなの回答

  • t-satoh
  • ベストアンサー率35% (211/591)
回答No.2

 もう解決されているかもしれませんが。(^^)  ブラウザはダウンロードするのか表示するのかを、 拡張子だけで判断しているのでは決してないです。  一般的には下記のような感じで、 レスポンスに値を設定します。 これはJavaに限ったことではなく、 RFCの規約で決められていることで、 WEBならどの言語を使用しても同じです。 RFCについてはWEB上で日本語訳も、 出回っていますので、それを読んでみましょう。 //CSVをダウンロードするサンプル import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CsvServlet extends HttpServlet {  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {   PrintWriter out = response.getWriter();   //レスポンスヘッダーを設定   response.setContentType("application/octetstream; charset=MS932");   response.setHeader("Content-disposition","attachement; filename= sample.csv");   //CSVを出力   out.println("123456,あいうえお");   out.println("123456,あいうえお");   out.println("123456,あいうえお");   out.println("123456,あいうえお");   out.println("123456,あいうえお");   out = null;  } }

すると、全ての回答が全文表示されます。
  • lawson
  • ベストアンサー率44% (29/65)
回答No.1

"データをWeb上に表示させる" ために使った検索ロジックの結果を 格納しているBeanからがあるので、 それからただCSVをつくればよいだけでは? urlの最後が http://www.hoge.co.jp?aa=xx&filename=file.xls などのように.csvで終わってれば windows環境ではブラウザの窓からエクセルが開いたり するし。 http://www.hoge.co.jp?aa=xx&filename=file.dat など、アプリケーションと関連付けされてないもの であれば、ダウンロードするかどうかのダイアログが でる。 IEはurlの最後が拡張子になっているもので 判断しているようなのでで "データをWeb上に表示させる"機能を実現した画面上で ダウンロードボタンを押下した時に GETで自分自身に遷移させて、 urlの終わりが.datになるようにしておけば ダウンロードにはず。 サーバ上でcsvのファイルを作るのはよくない。 同じファイルに毎回上書きするのは論外(排他制御の問題) で、毎回異なるファイルもサーバにゴミがたまったり してよくない(消しこみロジックについて考慮したり、うっとおしい。) なので、 単純に結果を byte[]のなかにでも格納してしまって。 getServletOutputStream とかそういうクラスで はいてclose()すればよい。 後は↑に記載したようにurlに細工を施して ください。 以上

すると、全ての回答が全文表示されます。

関連するQ&A