首先要导入jxl.jar包。
jsp页面代码:
<body>
<a href="UserServlet/exportExcel">导出excel表格</a>
</body>
Servlet代码:
@WebServlet("/UserServlet/*")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
HttpSession session=null;
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String uri=request.getRequestURI();
System.out.println("uri:"+uri);
//为了配合12306项目导出报表,我们往session中放一个集合
session=request.getSession();
List<Emp> empList=new ArrayList<>();
for(int i=0;i<10;i++)
{
Emp emp=new Emp(100+i, "name"+(100+i), "job"+(100+i));
empList.add(emp);
}
session.setAttribute("list", empList);
if(uri.endsWith("exportExcel"))
{
try {
exportExcel(request,response);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
private void exportExcel(HttpServletRequest request,
HttpServletResponse response) throws IOException, RowsExceededException, WriteException {
response.setHeader("Content-disposition", "attachment; filename="
+ new String("用户".getBytes("GB2312"), "8859_1") + ".xls");
response.setHeader("pragma", "no-cache");
response.setContentType("application/msexcel");
ServletOutputStream os = response.getOutputStream();
WritableWorkbook workbook = Workbook.createWorkbook(os);
WritableSheet ws = workbook.createSheet("用户列表", 0);
WritableFont font1 = new WritableFont(WritableFont.TIMES, 10,
WritableFont.BOLD);
WritableCellFormat format1 = new WritableCellFormat(font1);
//从session中取出员工数据集合
List<Emp> empList=(List<Emp>) session.getAttribute("list");
for(int i=0;i<empList.size();i++)
{
Emp emp=empList.get(i);
int columnIndex=0;
Label cell1 = new Label(columnIndex, i, emp.getEmpno()+"", format1);
ws.addCell(cell1);
Label cell2 = new Label(++columnIndex, i, emp.getEname(), format1);
ws.addCell(cell2);
Label cell3 = new Label(++columnIndex, i, emp.getJob(), format1);
ws.addCell(cell3);
}
workbook.write();
workbook.close();
}
}