这个问题可以分两部分讨论: 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"); %> |
Collection是一个request.