在jsp中点击按钮,在bean中把已经查出的数据,生成csv文件,然后在ie中自动打开

Quote:

这个问题可以分两部分讨论:

1、csv文件的格式
2、通过jsp向客户端输出csv文件

第一个问题我们就按简单的来讨论,可以认为是每个字段用""包含后再用,号分割
比如:
"a","b","c"
"d","e","f"

现在我们有了csv文件的内容,我们看看怎么把它输出到客户端

一种变通的方法是把csv的内容写到一个临时文件中,然后让客户端下载这个临时文件。

不过最简单的方法是直接向客户端输出:以下是csv.jsp的内容
"a","b","c"
"d","e","f"

就这么简单,这些信息就输出到客户端了。

不过现在的情况估计是不会满足楼主需要的,因为浏览器自己处理了这些信息,而不是交给excel来处理。
为了让浏览器把处理权让处理,我们需要在jsp的头部加上一些信息,告诉浏览器这些信息不用你来操心,交给其他合适的程序(对应csv来说当然是excel咯)来处理就好了。
先告诉它“以下信息是m$的,不是html的”:
<%@ page language="java" contentType="application/ms-excel"%>
再告诉它文件名是test.csv
<%response.setHeader("Content-Disposition","filename=test.xls");%>
最后是文件的内容:
"a","b","c"
"d","e","f"

全文就是这个样子
<%@ page language="java" contentType="application/ms-excel"%>
<%response.setHeader("Content-Disposition","filename=test.xls");%>
"a","b","c"
"d","e","f"

楼主把abcd什么的换成你从javaBean中查到的东西就可以了。

再访问这个网页,ie的话会提示你打开或者保存,应该是楼主想要的结果了吧。

以下是结合jstl实现的代码:
test.jsp文件
Code:

<%@ page contentType="text/html;charset=GBK" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
response.resetBuffer();
response.setContentType("application/unknow");
response.setHeader("Content-disposition",
"attachment; filename=test.csv");
%><c:forEach items="$" var="record">$,$</c:forEach>

Collection是一个request.
原文地址:https://www.cnblogs.com/dkblog/p/1980924.html