在Java Servlet中创建并下载CSV文件


问题内容

我正在研究Java ExtJS应用程序,需要在其中创建和下载CSV文件。

  • 单击按钮后,我希望将CSV文件下载到客户端计算机上。
  • 在按钮侦听器上,我正在使用AJAX调用servlet。在那里,我正在创建一个CSV文件。

我不希望将CSV文件保存在服务器中。我希望使用下载选项 动态 创建文件。我希望将文件的内容创建为字符串,然后将其作为 文件
提供,然后在浏览器中以下载模式打开该 文件 (这是我用其他语言实现的,但是不确定如何用Java实现) )。

这是我的代码,仅用于创建CSV文件,但是如果我只能将文件下载为CSV,我真的不想创建或保存CSV文件。

public String createCSV() {
    try {
        String filename = "c:\\test.csv";
        FileWriter fw = new FileWriter(filename);
        fw.append("XXXX");
        fw.append(',');
        fw.append("YYYY");
        fw.append(',');
        fw.append("ZZZZ");
        fw.append(',');
        fw.append("AAAA");
        fw.append(',');
        fw.append("BBBB");
        fw.append('\n');

        CSVResult.close();

        return "Csv file Successfully created";
    } catch(Exception e) {
        return e.toString();
    }
}

谁可以帮我这个事。

谢谢


问题答案:

我得到了解决方案,并将其发布在下面。

public void doGet(HttpServletRequest request, HttpServletResponse response)
{
    response.setContentType("text/csv");
    response.setHeader("Content-Disposition", "attachment; filename=\"userDirectory.csv\"");
    try
    {
        OutputStream outputStream = response.getOutputStream();
        String outputResult = "xxxx, yyyy, zzzz, aaaa, bbbb, ccccc, dddd, eeee, ffff, gggg\n";
        outputStream.write(outputResult.getBytes());
        outputStream.flush();
        outputStream.close();
    }
    catch(Exception e)
    {
        System.out.println(e.toString());
    }
}

在这里,我们不需要在服务器中保存/存储文件。

谢谢