方法一: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中了。