读书人

servlet 兑现excel 导出

发布时间: 2012-09-07 10:38:15 作者: rapoo

servlet 实现excel 导出

package com.test;import java.io.IOException;import java.io.OutputStream;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;/** * Servlet implementation class TestExcel */public class TestExcel extends HttpServlet{    private static final long serialVersionUID = 1L;    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doGet(HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException    {        StringBuffer sbFileName = new StringBuffer();        sbFileName.append("问卷类型维护报表.xls");        String fileName = "";        /*         * 浏览器不同 可能会造成导出的excel文件名出现乱码,解决方案是判断浏览器 然后根据不同的浏览器返回不同的编码格式.         */        if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0)        {            fileName = new String(sbFileName.toString().getBytes("utf-8"),                    "iso-8859-1");        }        else        {            fileName = URLEncoder.encode(sbFileName.toString(), "UTF-8");        }        response.reset();        response.setCharacterEncoding("UTF-8");        response.setContentType("application/x-excel");        response.setHeader("Content-Disposition", "attachment; filename="                + fileName);        OutputStream os = response.getOutputStream();        List<User> list = new ArrayList<User>();        User u1 = new User(1, "A", 21);        User u2 = new User(2, "B", 22);        User u3 = new User(3, "C", 23);        User u4 = new User(4, "D", 24);        list.add(u1);        list.add(u2);        list.add(u3);        list.add(u4);        try        {            exportToExcel(list, os);        }        catch (Exception e)        {            e.printStackTrace();        }    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse     *      response)     */    protected void doPost(HttpServletRequest request,            HttpServletResponse response) throws ServletException, IOException    {        this.doGet(request, response);    }    private static void exportToExcel(List<User> list, OutputStream os)            throws Exception    {        WritableWorkbook workbook = Workbook.createWorkbook(os);        WritableSheet sheet1 = workbook.createSheet("检查表", 0);        sheet1.addCell(new Label(0, 0, "用户编号"));        sheet1.addCell(new Label(1, 0, "用户姓名"));        sheet1.addCell(new Label(2, 0, "用户年龄"));        for (int i = 0, n = list.size(); i < n; i++)        {            User info = (User) list.get(i);            Label id = new Label(0, i + 1,String.valueOf(info.getId()));            sheet1.addCell(id);            Label name = new Label(1, i + 1, info.getName());            sheet1.addCell(name);            Label age = new Label(2, i + 1, String.valueOf(info.getAge()));            sheet1.addCell(age);        }        workbook.write();        workbook.close();    }}
?

读书人网 >编程

热点推荐