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