写入 OutputStream 的 csv 文件的输出错误

问题描述 投票:0回答:1

所以我的 jsp 文件中有一个表单,当我单击按钮时,我希望它执行 sql 查询并将结果转换为 s csv 文件,然后下载。我通过 servlet 执行此操作,我遇到的问题是,在下载的 csv 文件中,我得到的是“com.opencsv.CSVWriter@771aa22”而不是我的查询

这是有问题的 doGet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String sql QueryConstant.CFOUSERQUERY;
    Connection conn =null;
    Statement stmt = null;
    ResultSet rs = null;
    String csvResult="";
    try{
        ConnectionManager connMan= GFOServer.GetGoldInt.ConnectionManager();
        conn connMan.allocateConnection(); 
        stmt. conn.createStatement();
        rs=stmt.executeQuery(sql);
        CSVWriter writer new CSVWriter(new FileWriter("CFOUserQueryReport.csv"));
        writer.writeall (rs, true);
        csvResult= writer.toString();
        writer.close();
        connMan.closeStatement(stmt);
        connMan.closeResultSet(rs);
        connMan.deallocateConnection(conn);

        response.setContentType("text/csv");
        response.setHeader("Content-disposition", "attachment: filename CFOUserQueryReport.csv");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Expires", "-1");
        response.getOutputStream().write(csvResult.getBytes());
    } catch (Exception e) {
        e.getMessage();
    }
}
java opencsv
1个回答
0
投票

此行不正确:

    csvResult = writer.toString();

toString()
上的
Writer
方法是从
toString
继承的
java.lang.Object
方法。 这会产生您看到的字符串。

writer
是一个
FileWriter
并且
FileWriter
上没有任何方法可以为您提供写入文件的内容;即在
writeAll
通话中。

如果您需要以字符串形式写入文件的 CSV,您可以:

  • 将其写入
    StringWriter
    ,或者
  • 使用
    Files.readString(Path)
    ,或
  • 其他事情
© www.soinside.com 2019 - 2024. All rights reserved.