freemarker导出excel
博客分类: J2EE
.
最近在做财务方面的报表,自然也就需要导出excel,看了网上的一些方案,比如poi,或是active控件,不是浏览器限制就是写起来复杂,要引进一大堆jar包,还不公用。最后借鉴了以下两篇:
http://www.oschina.net/question/12_638
http://blog.csdn.net/jackyyen/article/details/4584987
项目用的是springmvc3,没有webwork,struts2之类
1.首先是配置文件
Xml代码 复制代码 收藏代码
1.<beans:bean id="freemarkerViewResolver"
2. class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
3. <beans:property name="order" value="1" />
4. <beans:property name="prefix" value="/WEB-INF/freemarker/views/" />
5. <beans:property name="suffix" value=".ftl" />
6. <beans:property name="contentType" value="text/html; charset=UTF-8" />
7. <beans:property name="exposeRequestAttributes" value="false" />
8. <beans:property name="exposeSessionAttributes" value="false" />
9. <beans:property name="exposeSpringMacroHelpers" value="true" />
10.</beans:bean>
11.
12.<beans:bean id="ExcelViewResolver"
13. class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
14. <beans:property name="order" value="2" />
15. <beans:property name="prefix" value="/WEB-INF/freemarker/views/" />
16. <beans:property name="suffix" value=".xtl" />
17. <beans:property name="contentType" value="application/vnd.ms-excel" />
18. <beans:property name="exposeRequestAttributes" value="false" />
19. <beans:property name="exposeSessionAttributes" value="false" />
20. <beans:property name="exposeSpringMacroHelpers" value="true" />
21.</beans:bean>
2.java代码
Java代码 复制代码 收藏代码
1./**
2. * @author lip 创建于 2012-7-24
3. *
4. */
5.@Controller
6.public class ExportExcelAction {
7.
8. @RequestMapping(value = "/exportexcel")
9. public String exportExcel(String excelContent,Model model, HttpServletRequest request,
10. HttpServletResponse response)
11. {
12. Date now = new Date();
13. //根据时间生成文件名
14. response.setHeader("Content-disposition","inline; filename="+now.getTime()+".xls");
15. model.addAttribute("excelContent", excelContent);
16. return "excel/export";
17. }
18.}
3.ftl代码
Java代码 复制代码 收藏代码
1.<table width="100%" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse">
2.${excelContent}
3.</table>
4.很多页面的table都需要导出功能,所以做成了宏
Html代码 复制代码 收藏代码
1.<#macro excelDiv>
2.<form id="excelForm" action="exportexcel" method="post">
3. <textarea style="display:none" id="excelContent" name="excelContent">
4. </textarea>
5.</form>
6.<script>
7.$(function(){
8. var content = $('table.table').html();
9. $('#excelContent').text(content);
10.});
11.</script>
12.</#macro>
5.页面使用时,加个导出按钮,和上面那个宏
Html代码 复制代码 收藏代码
1.<a class="icon" href="javascript:$('#excelForm').submit()"><span>导出EXCEL</span></a>
2.<table class="table" width="100%" layoutH="138">
3.……
4.需要导出的表内容
5.……
6.</table>
7.<@excelDiv/>
测试了一下120条记录导出也很流畅,chrome,ff都没什么问题,ie9最后一行会不全……什么都不想说了