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(); }}?