gpt4 book ai didi

excel - MIME 类型/内容类型,用于在 IE 和 Firefox 中使用 Excel 打开 CSV 文件

转载 作者:行者123 更新时间:2023-12-02 22:09:52 24 4
gpt4 key购买 nike

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

  • 在 IE(8.0 版)中,系统会提示我“打开”或“保存”文件。如果我选择“打开”;它只是将 CSV 格式的文本转储到屏幕上,而不是在 Excel 中打开它。如果我选择“保存”;我收到一条错误消息 – “无法打开此网站。请求的站点不可用或找不到。”
  • 也适用于 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 检查发回的 header & 我看到以下内容 –

内容处置:附件;文件名=下载.CSV

内容类型:text/plain;charset=UTF-8

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

传输编码:分块

变化:接受编码

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

最佳答案

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

    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 - MIME 类型/内容类型,用于在 IE 和 Firefox 中使用 Excel 打开 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com