最近在做一个文件导出功能,发现大部分博客上通过引用各种的util工具包,其实说白了还是利用apache的poi,在项目中直接导入poi包就可以。直面其原理,随个人喜好封装。
1、首先准备一些poi的jar包
1、首先准备一些poi的jar包

2、准备好jar包之后就可以写代码了,接下来我就把代码写简单,让大家都能看懂。至于你后面想用多么牛逼的代码实现它,都可以,只要原理懂了,其它的都不是事,对吧。
首先我要建一个实体类:Student.class
package testExport;
/**
*
* @author lf
*
*/
public class Student {
private Integer id;
private String name;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this .sex = sex;
}
}
还有一个导出类 ExportExcel.class
package testExport;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
//下面是和数据导出有关的包
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class ExportExcel {
public void Export(){
// 声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明一个单子并命名
HSSFSheet sheet = wb.createSheet(学生表);
//给单子名称一个长度
sheet.setDefaultColumnWidth(( short ) 15 );
// 生成一个样式
HSSFCellStyle style = wb.createCellStyle();
//创建第一行(也可以称为表头)
HSSFRow row = sheet.createRow( 0 );
//样式字体居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//给表头第一行一次创建单元格
HSSFCell cell = row.createCell(( short ) 0 );
cell.setCellValue(学生编号);
cell.setCellStyle(style);
cell = row.createCell( ( short ) 1 );
cell.setCellValue(学生姓名);
cell.setCellStyle(style);
cell = row.createCell(( short ) 2 );
cell.setCellValue(学生性别);
cell.setCellStyle(style);
//添加一些数据,这里先写死,大家可以换成自己的集合数据
List<student> list = new ArrayList<student>();
list.add( new Student( 111 ,张三,男));
list.add( new Student( 111 ,李四,男));
list.add( new Student( 111 ,王五,女));
//向单元格里填充数据
for ( short i = 0 ; i < list.size(); i++) {
row = sheet.createRow(i + 1 );
row.createCell( 0 ).setCellValue(list.get(i).getId());
row.createCell( 1 ).setCellValue(list.get(i).getName());
row.createCell( 2 ).setCellValue(list.get(i).getSex());
}
try {
//默认导出到E盘下
FileOutputStream out = new FileOutputStream(E: //学生表.xls);
wb.write(out);
out.close();
JOptionPane.showMessageDialog( null , 导出成功!);
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog( null , 导出失败!);
e.printStackTrace();
} catch (IOException e) {
JOptionPane.showMessageDialog( null , 导出失败!);
e.printStackTrace();
}
}
}
下面看一下效果图:
|