方法一:jxl
下载jxl.jar ,加入到工程中。
import java.io.*; import jxl.*; import jxl.write.*; import beans.Student; import java.util.ArrayList; public class Excel { //list存放数据, filename是excel存放的路径以及名称 public static void ExportExcel(ArrayList list, String filename) { try { WritableWorkbook book = Workbook.createWorkbook(new File("filename")); WritableSheet sheet = book.createSheet("sheet1", 0); //添加表头, 第一个参数是列,第二个是行 Label label1 = new Label(0, 0 , "学号"); //第一列第一行 Label label2 = new Label(1, 0, "姓名"); //第二列第一行 //添加到sheet1中 sheet.addCell(label1); sheet.addCell(label2); if (list.size != 0) { Iterator it = list.iterator(); int i = 1; //表示行 while (it != null && it.next) { Student stu = (Student) it.next(); //list里存放学生 Label l1 = new Label(0, i, stu.getSno()); Label l2 = new Label(1, i, stu.getName()); sheet.addCell(l1); sheet.addCell(l2); i++; } book.write(); book.close(); } } catch (Exception e) { System.out.println(e.getMessage()); } } }
方法二:poi
下载poi相关的包,我下载的是最新的poi-3.8-beta3-20110606.jar,将F:poi-3.8-beta3-20110606.jar和poi-excelant-3.8-beta3-20110606.jar加入工程中
写一个导出类:Export.java,,将要导出的信息存在List中
public class Export { //建立学生表格 public void buildStudentExcel(List list, String sheetname, OutputStream out) { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet("sheet1"); HSSFRow row = sheet1.createRow((short) 0); row.createCell(0).setCellValue("校园卡号"); row.createCell(1).setCellValue("学号"); row.createCell(2).setCellValue("姓名"); row.createCell(3).setCellValue("性别"); row.createCell(4).setCellValue("学院"); row.createCell(5).setCellValue("专业"); row.createCell(6).setCellValue("贫困生"); row.createCell(7).setCellValue("已签协议书"); row.createCell(8).setCellValue("日期"); row.createCell(9).setCellValue("获奖情况"); row.createCell(10).setCellValue("备注"); for (int i = 0; i < list.size(); i++) { Student s = (Student)list.get(i); row=sheet1.createRow((short)(i+1)); row.createCell(0).setCellValue(s.getKahao()); row.createCell(1).setCellValue(s.getXuehao()); row.createCell(2).setCellValue(s.getXingming()); row.createCell(3).setCellValue(s.getXingbie()); row.createCell(4).setCellValue(s.getXueyuan()); row.createCell(5).setCellValue(s.getZhuanye()); row.createCell(6).setCellValue((s.getPks() == 0) ? "否" : "是"); row.createCell(7).setCellValue((s.getXieyishu() == 0) ? "否" : "是"); row.createCell(8).setCellValue(s.getRiqi()); row.createCell(9).setCellValue(s.getHuojiang()); row.createCell(10).setCellValue(s.getBeizhu()); } try { out.flush(); wb.write(out); out.close(); } catch (IOException e) { e.printStackTrace(); System.out.println("Out is closed "); } } 然后是一个jsp页面,用于导出数据: <%@ page contentType="application/vnd.ms-excel" language="java" import="java.util.*,edu.sdau.excelout.Export" pageEncoding="UTF-8" %> <%@page import="edu.sdau.bean.Student"%> <% response.setHeader("Content-Disposition","attachment;filename=exportdata.xls");//指定下载的文件名 response.setContentType("application/vnd.ms-excel"); Export ex = new Export(); List list = (List)session.getAttribute("exportlist"); ex.buildStudentExcel(list, "exportdata.xls",response.getOutputStream()); out.clear(); out=pageContext.pushBody(); %>注意:<% %>之外不要有任何东西,包括空格。如果<% %>之间也不留任何空格的话,最后两句红色的可以不要,如果有空格,如上面,需要加上这两句红色 的语句,否则会报getOutputStream() has been called by response异常。我是取出要导出的数据之后,直接放到session中了。