JFinal框架使用renderFile()进行列表页面数据导出Excel

这篇博客介绍了如何利用JFinal的工具类`ExcelExportUtil`将列表页面的数据导出为Excel文件。首先,定义了文件路径和时间戳,然后创建`HSSFWorkbook`对象并创建工作表。接着,创建标题行并遍历标题数据,再根据传入的记录列表创建数据行。最后,将工作簿写入指定文件并关闭输出流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.business.util;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.plugin.activerecord.Record;


public class ExcelExportUtil {


private static final String FILEPATH = new File("C:/").getAbsolutePath();
private static final String time = DateUtil.formatDate();
public static String getTitle(String title){
//title是Excel命名名称
    String name=FILEPATH+title+"-"+time+"_统计表.xls";  
    return name;
}


public static File saveFile(Map<String, String> headData, List<Record> list, File file) {
// 创建工作薄
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
// 创建工作薄中的工作表 sheet:一张表的简称
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));
}


// 得到所有记录 行:列
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;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值