Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
用于在IE&;中使用Excel打开CSV文件的MIME类型/内容类型;火狐_Excel_Csv_Solr - Fatal编程技术网

用于在IE&;中使用Excel打开CSV文件的MIME类型/内容类型;火狐

用于在IE&;中使用Excel打开CSV文件的MIME类型/内容类型;火狐,excel,csv,solr,Excel,Csv,Solr,我在获取CSV输出以在Excel中识别和打开时遇到问题。在我的web应用程序中,我有一个java servlet,它将搜索结果返回给用户。搜索结果由ApacheSolr服务器提供。GUI前端有一个选项,允许用户以“CSV”格式请求搜索结果。如果选择此选项,则通过添加“wt=csv”参数,针对Solr重新运行查询。然后,java过滤器添加标题以将结果作为CSV格式的文本返回。但它不能正常工作 在IE(8.0版)中,系统会提示我“打开”或“保存”文件。如果我选择“打开”;它只是在屏幕上转储CSV格

我在获取CSV输出以在Excel中识别和打开时遇到问题。在我的web应用程序中,我有一个java servlet,它将搜索结果返回给用户。搜索结果由ApacheSolr服务器提供。GUI前端有一个选项,允许用户以“CSV”格式请求搜索结果。如果选择此选项,则通过添加“wt=csv”参数,针对Solr重新运行查询。然后,java过滤器添加标题以将结果作为CSV格式的文本返回。但它不能正常工作

  • 在IE(8.0版)中,系统会提示我“打开”或“保存”文件。如果我选择“打开”;它只是在屏幕上转储CSV格式的文本,而不是在Excel中打开它。如果我选择“保存”;我收到一条错误消息—“无法打开此internet站点。请求的站点不可用或找不到。”
  • 在Firefox(10.0.9版)中;系统会提示我打开或保存文件。但用于打开CSV文件;默认选项是记事本&Excel甚至没有列出。如果我单击“保存”,那么它会下载CSV文件&我可以在Excel中打开它,Excel会正确识别它
我尝试过各种标题和组合——

  //((HttpServletResponse)response).setHeader("Content-Type", "application/octet; charset=utf-8");
  ((HttpServletResponse)response).setHeader("Content-Type", "text/csv");
  //((HttpServletResponse)response).setHeader("Content-Type", "application/vnd.ms-excel");
  //((HttpServletResponse)response).setHeader("Cache-Control", "private, private,max-age=0,must-revalidate");
  //((HttpServletResponse)response).setHeader("Content-Encoding", "gzip");
  //((HttpServletResponse)response).setHeader("Content-Encoding", "binary");
  ((HttpServletResponse)response).setHeader("Content-Disposition", "attachment; filename=Download.CSV");
  //((HttpServletResponse)response).setHeader("Content-Disposition", "inline; filename=Download.CSV;");
但它们似乎都没有起作用。我使用Firefox检查发送回来的标题&我看到了以下内容——

内容处置:附件;filename=Download.CSV

内容类型:文本/纯文本;字符集=UTF-8

服务器:Jetty(7.x.y-SNAPSHOT)

传输编码:分块

改变:接受编码


即使内容类型指定为csv或excel;当它到达浏览器时,它被解释为文本/纯文本&我认为这就是问题所在。不确定应该设置什么标题或编码?有什么建议吗?谢谢。

我正在做类似的事情,这是我使用的代码的一部分:

    Date dt = new Date();
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd_HHmmss");
    String filename = fmt.format(dt) + ".csv";
    //Setup the output
    String contentType = "application/vnd.ms-excel";
    FacesContext fc = FacesContext.getCurrentInstance();
    HttpServletResponse response = (HttpServletResponse)fc.getExternalContext().getResponse();
    response.setHeader("Content-disposition","attachment; filename=" + filename);
    response.setContentType(contentType);
注意,我使用变量“contentType”告诉servlet将生成什么类型的文件


希望对您有用。

您的计算机上是否有与Excel关联的.csv扩展名?如果没有,IE和Firefox可能不知道需要用Excel打开它。