最近在做一個文件導出功能,發現大部分博客上通過引用各種的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();
}
}
}
下面看一下效果圖:
|
