Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JSF2.0中生成CSV文件_Java_Apache_Csv_Apache Poi - Fatal编程技术网

Java 在JSF2.0中生成CSV文件

Java 在JSF2.0中生成CSV文件,java,apache,csv,apache-poi,Java,Apache,Csv,Apache Poi,我在应用程序中使用ApachePOI和JSF2.0以excel格式生成报告 截取代码以生成Excel final FacesContext facesContext = FacesContext.getCurrentInstance(); final ExternalContext externalContext = facesContext .getExternalContext(); externalContext.setRes

我在应用程序中使用ApachePOI和JSF2.0以excel格式生成报告

截取代码以生成Excel

final FacesContext facesContext = FacesContext.getCurrentInstance();
        final ExternalContext externalContext = facesContext
                .getExternalContext();
        externalContext.setResponseContentType("application/vnd.ms-excel");
            externalContext.setResponseHeader("Content-Disposition",
            "attachment; filename=\"Excel Sample");
        workbook.write(externalContext.getResponseOutputStream());
        facesContext.responseComplete();
如您所见,我正在为服务器添加“application/vnd.ms excel”-MIME类型。我只是在玩,想知道我们是否可以将MIME类型更改为CSV。我不再为报告生成Excel文件

还有一个函数,我从数据库中获取数据,并使用HSSF对象将其写入单元格。在将数据写入每个单元格后,我调用这个方法(代码片段)

我应该写什么来代替

setResponseContentType(“application/vnd.ms excel”)


以便生成具有csv扩展名的文件

CSV文件的正常mimetype是
text/CSV


生成文件时,请确保正确引用值。使用现有库来确保完成这项工作可能是值得的,特别是如果您有复杂的值

您需要什么-CSV的mimetype,或如何生成CSV文件内容的说明?@Gagravarr,我正在使用Java编程写入excel文件。excel输出文件可能包含100000行。这可能导致内存异常问题。我在某个地方读到,大多数现有的JavaAPI都试图一次在RAM中构建整个文档。因此,我们决定将数据直接写入CSV。虽然我正在寻找mimetype指令,但是如何生成CSV会有很大的帮助,可能是一个代码片段/算法会有所帮助。我不想使用任何第三方库。如果您愿意生成.xlsx文件而不是.xls文件,可以使用POI中的SXSSF以流式方式生成文件。xls文件不能以同样的方式生成,因为在格式中有太多的前后引用。嗨,谢谢你的回答,它成功了。但不知怎的,我面临着一个奇怪的问题。使用StringBuilder sb=new StringBuilder()生成csv文件后;“某人附加(“你好”)……等等”,然后我就这样做了。sb.write(externalContext.getResponseOutputStream());这就产生了问题,在这种情况下,您能帮助我如何写入输出流吗。?
response.setContentType("text/comma-separated-values; charset=utf8");