JFinal2.2中,如何实现excel文件在线预览

背景:项目要在浏览器里预览excel,网上的插件要收费。产品经理说,要邮箱那种可以预览excel的功能,靠。。。

思路:插件太贵,投机倒把一下,把excel转成html,在页面显示,让excel的样式,也就是css,长得像excel就OK了。

开工:玩excel一般,就用POI.jar相关的jar包,我们打开他,发现,他有现成的一个java类在poi-examples-3.16-beta2.jar里的ToHtml.java,天助我也。

blob.png

直接用他就OK了。下面,显示我的JFinal的action代码:

@ActionKey("/web/memberCenter/batchExcelView")
	public void batchExcelView()  {
		
			String localFile = "D:\1231.xls";
			HttpServletResponse response = this.getResponse();
			response.setContentType("text/html;charset=utf-8");
			PrintWriter printWriter = response.getWriter();
			ToHtml toHtml = ToHtml.create(localFile, printWriter);
			toHtml.setCompleteHTML(true);
			toHtml.printPage();
		}
		renderNull();
		return;
	}

这样就显示出来了,如果感觉愁,可以手动改修改样式。改造源码,这就不用我说了,下面是效果图:

blob.png

打完收工,下班啦。

评论区

JFinal

2017-03-09 21:09

思路不错,感谢分享,哈哈

疑思静想

2017-03-10 13:41

不得不赞

qiushui90

2017-03-22 23:45

这个多个sheet转出来是个啥效果呢?

韦甩甩

2017-03-24 10:46

@qiushui90 貌似多个sheet不行。以下是源码中一段
private void printSheets() {
ensureOut();
Sheet sheet = wb.getSheetAt(0);
printSheet(sheet);
}

chenxb8089

2018-01-17 15:49

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 报错了

马小酱

2018-02-21 15:07