JFinal的Excel導出
在自己的WEB項目中要用到導出Excel,是以結合網絡上的資源寫了一個自己的export 工具類。
說明:
JFinal 環境
WEB項目
JAVA背景生成非JS插件
好了,直接撸代碼
1.設定檔案儲存路徑
private static final String FILEPATH = PathKit.getWebRootPath() + File.separator + “upload” + File.separator ;//路徑為webRoot/upload/
2.設定 檔案名
public static String getTitle(){
Date date = new Date();
SimpleDateFormat dateFormat=new SimpleDateFormat(“yyyy-MM-dd”);
String title=FILEPATH+dateFormat.format(date)+"_統計報表.xls";
return title;
}
3.前台頁面調用
導出資料 4.contr oller處理并renderFile回去 public void export(){ String sql = "select * from `order`"; Map
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;
public class ExcelExportUtil {
private static final String FILEPATH = PathKit.getWebRootPath() + File.separator + "upload" + File.separator ;
public static String getTitle(){
Date date = new Date();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
String title=FILEPATH+dateFormat.format(date)+"_統計報表.xls";
return title;
}
public static File saveFile(Map<String, String> headData, String sql, File file) {
// 建立工作薄
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
// sheet:一張表的簡稱
// row:表裡的行
// 建立工作薄中的工作表
HSSFSheet hssfSheet = hssfWorkbook.createSheet();
// 建立行
HSSFRow row = hssfSheet.createRow(0);
// 建立單元格,設定表頭 建立列
HSSFCell cell = null;
// 初始化索引
int rowIndex = 0;
int cellIndex = 0;
// 建立标題行
row = hssfSheet.createRow(rowIndex);
rowIndex++;
// 周遊标題
for (String h : headData.keySet()) {
//建立列
cell = row.createCell(cellIndex);
//索引遞增
cellIndex++;
//逐列插入标題
cell.setCellValue(headData.get(h));
}
// 得到所有記錄 行:列
List<Record> list = Db.find(sql);
Record record = null;
if (list != null) {
// 擷取所有的記錄 有多少條記錄就建立多少行
for (int i = 0; i < list.size(); i++) {
row = hssfSheet.createRow(rowIndex);
// 得到所有的行 一個record就代表 一行
record = list.get(i);
//下一行索引
rowIndex++;
//重新整理新行索引
cellIndex = 0;
// 在有所有的記錄基礎之上,便利傳入進來的表頭,再建立N行
for (String h : headData.keySet()) {
cell = row.createCell(cellIndex);
cellIndex++;
//按照每條記錄比對資料
cell.setCellValue(record.get(h) == null ? "" : record.get(h).toString());
}
}
}
try {
FileOutputStream fileOutputStreane = new FileOutputStream(file);
hssfWorkbook.write(fileOutputStreane);
fileOutputStreane.flush();
fileOutputStreane.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
}
//轉自@TheLostman