2

いくつかの値を持つ結果セットがあります。結果セットにあるデータを、保存ダイアログを使用してテキストファイルとしてエクスポートしたいと思います。

これをJavaで行う方法は?

私は次のようにExcelとJavaの上記の要件を実行しました。

response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".xls\"");

response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".pdf\""); response.setContentType("application/pdf");

アップデート :

if(exportTo.equals("text")){
            response.setContentType("text/plain");
            response.setHeader("Content-disposition", "attachment; filename=\"" + reportName + ".txt\"");
            try {

            } catch (Exception e) {
                // TODO: handle exception
            }

        }

これで

tryブロックでは、結果セットから出力ストリームに利用できるコンテンツを設定して利用できるようにする方法をブロックします。

4

1 に答える 1

3

唯一の違いはこれです:

response.setContentType("text/plain");

ここで完全な例を見ることができます(http://www.mkyong.com/servlet/servlet-code-to-download-text-file-from-website-java/

アップデート

これは私が開発してテストしたデモであり、完全に正常に機能します。

public class ServletDownloadDemo extends HttpServlet {
    private static final int BYTES_DOWNLOAD = 1024;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
                                                                                       IOException {
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment;filename=downloadname.txt");

        String s = "Test\n\nText file contects!!";
        InputStream input = new ByteArrayInputStream(s.getBytes("UTF8"));

        int read = 0;
        byte[] bytes = new byte[BYTES_DOWNLOAD];
        OutputStream os = response.getOutputStream();

        while ((read = input.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        }
        os.flush();
        os.close();
    }
}

downloadname.txtの内容で名前が付けられたテキストファイルをダウンロードしますString s

更新2

    String s = "";
    while (rs.next()) {
        s += rs.getString("column_name");
    }

    if (exportTo.equals("text")) {
        response.setContentType("text/plain");
        response.setHeader("Content-Disposition", "attachment;filename=downloadname.txt");

        try {
            InputStream input = new ByteArrayInputStream(s.getBytes("UTF8"));

            int read = 0;
            byte[] bytes = new byte[BYTES_DOWNLOAD];
            OutputStream os = response.getOutputStream();

            //data form resultset

            while ((read = input.read(bytes)) != -1) {
                os.write(bytes, 0, read);
            }
            os.flush();
            os.close();
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

にデータを入力し、ResultSet必要なものをに配置する必要がありString sます。それで全部です。

于 2012-09-26T11:45:00.727 に答える