浏览 2392 次
锁定老帖子 主题:freemarker导出excel
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-07-24
最近在做财务方面的报表,自然也就需要导出excel,看了网上的一些方案,比如poi,或是active控件,不是浏览器限制就是写起来复杂,要引进一大堆jar包,还不公用。最后借鉴了以下两篇: http://www.oschina.net/question/12_638 http://blog.csdn.net/jackyyen/article/details/4584987
项目用的是springmvc3,没有webwork,struts2之类
1.首先是配置文件 <beans:bean id="freemarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <beans:property name="order" value="1" /> <beans:property name="prefix" value="/WEB-INF/freemarker/views/" /> <beans:property name="suffix" value=".ftl" /> <beans:property name="contentType" value="text/html; charset=UTF-8" /> <beans:property name="exposeRequestAttributes" value="false" /> <beans:property name="exposeSessionAttributes" value="false" /> <beans:property name="exposeSpringMacroHelpers" value="true" /> </beans:bean> <!-- 重点是这个 --> <beans:bean id="ExcelViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <beans:property name="order" value="2" /> <beans:property name="prefix" value="/WEB-INF/freemarker/views/" /> <beans:property name="suffix" value=".xtl" /> <beans:property name="contentType" value="application/vnd.ms-excel" /> <beans:property name="exposeRequestAttributes" value="false" /> <beans:property name="exposeSessionAttributes" value="false" /> <beans:property name="exposeSpringMacroHelpers" value="true" /> </beans:bean>
2.java代码
/** * @author lip 创建于 2012-7-24 * */ @Controller public class ExportExcelAction { @RequestMapping(value = "/exportexcel") public String exportExcel(String excelContent,Model model, HttpServletRequest request, HttpServletResponse response) { Date now = new Date(); //根据时间生成文件名 response.setHeader("Content-disposition","inline; filename="+now.getTime()+".xls"); model.addAttribute("excelContent", excelContent); return "excel/export"; } } 3.ftl代码 <table width="100%" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse"> ${excelContent} </table>
4.很多页面的table都需要导出功能,所以做成了宏
<#macro excelDiv> <form id="excelForm" action="exportexcel" method="post"> <textarea style="display:none" id="excelContent" name="excelContent"> </textarea> </form> <script> $(function(){ var content = $('table.table').html(); $('#excelContent').text(content); }); </script> </#macro> 5.页面使用时,加个导出按钮,和上面那个宏
<a class="icon" href="javascript:$('#excelForm').submit()"><span>导出EXCEL</span></a> <table class="table" width="100%" layoutH="138"> …… 需要导出的表内容 …… </table> <@excelDiv/>
测试了一下120条记录导出也很流畅 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |