JFinal的Excel导出

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值