项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件。
一、POI和JXL介绍
1、POI:是对所有office资源进行读写的一套工具包、属于apache开源组织。
poi操作excel:
poi是把整个文件的属性都封装在HSSFWorkbook 中;
通过HSSFWorkbook来操作单个工作薄。然后通过工作薄来操作行;
在通过行来操控单元格。这样一级一级的分拆下来;
HSSFWorkbook---->HSSFSheet----->HSSFRow---->HSSFCell;
由于是基于HSSFWorkbook对象一步步创建起来的。所以不用把创建好的单元格添加进这个对象中、
如果需要对部分表格进行设置样式什么的。就可以创立HSSFCellStyle对象来进行设定样式;
2、JXL:只能对excel进行操作的一套工具包。
jxl是把整个文件封装在Workbook相关对象中;
通过Workbook去创建sheet工作薄;但是和poi不一样的地方是
jxl是通过向sheet中使用label(单元格)来进行读取写入;
Workbook----->sheet------>label ;
jxl是先创建一个工作区域、然后区创立单元格、单元格包含这个单元格的位置、内容等信息;然后把这个单元格加入工作区;
二、实例操作
1、用POI方式实现导出数据到excel功能
实现思路:当一点击导出按钮就跳转到指定的action去执行对应方法,先调用dao对数据库数据进行查询,根据dao层的方法返回一个集合对象,然后把这个集合对象的数据交互给POI去动态生成单元格并设置进去。项目后端我用的是ssh框架搭建项目,所以逻辑代码我写在action类中。直接看以下代码示例
前端jsp页面按钮部分
交换生实体类
package com.international.model;
import java.util.Date;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
public class ExchangeStudent {
//此表按照单表来操作,只用作记录
private int id;
private String studentNo;
private String studentName;
private String sex;
private String major;
private String className;
private Date startTime;
private Date endTime;
private String exchangeCollege;
private String reserves1;
private String reserves2;
private String reserves3;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStudentNo() {
return studentNo;
}
public void setStudentNo(String studentNo) {
this.studentNo = studentNo;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getExchangeCollege() {
return exchangeCollege;
}
public void setExchangeCollege(String exchangeCollege) {
this.exchangeCollege = exchangeCollege;
}
public String getReserves1() {
return reserves1;
}
public void setReserves1(String reserves1) {
this.reserves1 = reserves1;
}
public String getReserves2() {
return reserves2;
}
public void setReserves2(String reserves2) {
this.reserves2 = reserves2;
}
public String getReserves3() {
return reserves3;
}
public void setReserves3(String reserves3) {
this.reserves3 = reserves3;
}
}
后端action类内的业务方法代码
//导出交换生
public String exportExchangeSudent() throws Exception{
//获取交换生对象
List studentList = esd.queryInterStudents("");
String