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.前台页面调用
<p Alignment="left"><a href="/admin/pay/export">导出数据</a>
4.contr oller处理并renderFile回去
public void export(){
	String sql = "select * from `order`";
        Map<String, String> titleData = new HashMap<String, String>();//标题,后面用到
        titleData.put("order_no", "账单号");
        titleData.put("good_code", "商品编码");
        titleData.put("size", "尺码");
        titleData.put("number", "数量");
        titleData.put("type", "类型");
        titleData.put("order_time", "时间");
        File file = new File(ExcelExportUtil.getTitle());
	file = ExcelExportUtil.saveFile(titleData, sql, file);
	this.renderFile(file);
}
5.工 具类所有代码
package com.feng.util;

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;
	}
}

5.最终效果

JFinal学习-Excel导出_第1张图片

JFinal学习-Excel导出_第2张图片

你可能感兴趣的:(导出Excel,jFinal)