JFinal-ext PoiRender 导出excel文件内容为空,求解

大白0-0 发布于 2016/05/12 11:12
阅读 1K+
收藏 0

使用JFinal 1.9 需要开发一个报表导出到EXCEL文件的功能,使用JFinal-ext3.1.2,相关的jar包都已导入。下载文件后,内容为空,以为PoiRender不支持List<Record>,改用List<Student>依然不行,不知如何解决,疑惑中...

补充:POI版本3.14

package demo;


import java.util.List;


import com.jfinal.core.Controller;
import com.jfinal.ext.render.excel.PoiRender;
import com.jfinal.kit.JsonKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;


public class IndexController extends Controller {
 public void index(){
 List<Record> list = Db.find("select * from student");
 renderJson(JsonKit.toJson(list));
 }
 
 public void download(){
 String[]  header={"编号","性别","姓名","班级"};
        String[]  columns={"id","sex","name","class"};
        List<Student> objs= Student.me.find("select * from student");
 //List<Record> list = Db.find("select * from student");
 render(PoiRender.me(objs).fileName("test.xls").headers(header).columns(columns).cellWidth(5000).headerRow(2)); 
 }
}



package demo;

import com.jfinal.plugin.activerecord.Model;

@SuppressWarnings("serial")
public class Student extends Model<Student> {
	public static final Student me = new Student();
}

谢谢大家,问题已解决

通过关联jfinal-ext的源码包,进行调试发现,程序内部抛出了异常(但没有打印到我的控制台上)


具体的异常信息如下:

这才恍然大悟,原来还需要写sheetNames,于是修改代码:

	public void download(){
		String[]  header={"编号","性别","姓名","班级"};
        String[]  columns={"id","sex","name","class"};
        //List<Student> list= Student.me.find("select * from student");
		List<Record> list = Db.find("select * from student");
		try{
			PoiRender me = PoiRender.me(list).fileName("test.xls").sheetName("rank").headers(header).columns(columns).cellWidth(5000).headerRow(1);
			render(me);
		}catch(Exception e){
			
			renderNull();
		}		
	}



至此,问题得到解决。

加载中
返回顶部
顶部