我自己本身不是很会写,所以参照了别人的代码:
http://www.jfinal.com/share/183
他的代码有部分改动(由反射改成了类型转换,思考:直接将T写死成Record,controller里面根据前台传递的参数拼接sql,少了一步强转):
private static <T> Object getFieldValue(T t, String fieldName) throws Exception{
if (t == null) {
return null;
}
Model m = (Model)t;
return m.get(fieldName);
}只管贴代码吧,前端用的是layui:
按钮:
<button class="layui-btn layui-btn-small" data-type="exp"> <i class="layui-icon"></i>导出 </button>
//调用函数
exp : function(){
var wb = {
headNames: '编号,登录名称,昵称,创建时间,密码,是否锁定,最后一次在线时间,状态,是否在线',
heads: 'id,code,name,createTime,password,isLocked,lastOnline,state,online',
xlsName: '用户列表'
}
var temp = document.createElement("form");
document.body.appendChild(temp);
temp.action = "/user/expExcel";
temp.method = "POST";
temp.style.display = "none";
if (wb != null) {
for ( var x in wb) {
var opt = document.createElement("input");
opt.name = x;
opt.type = 'hidden';
opt.value = wb[x];
temp.appendChild(opt);
}
}
temp.submit();
}后台action代码(请原谅我没有捕捉异常):
public void expExcel() throws Exception{
String[] headNames = getPara("headNames").split(",");
String[] heads = getPara("heads").split(",");
String xlsName = getPara("xlsName");
List<User> users = User.dao.find("select * from t_user");
ExcelKit.outPutExcel(users, headNames, heads, xlsName, getRequest(), getResponse());
//下面这句话不写,坑死人。。。不信你试试,哈哈哈
renderNull();
}后期如果有空的话,可以给出一个选择列表,由客户去选择导出需要的数据行(假想效果):

个人比较菜,轻喷。。哈哈哈