`
darklipeng
  • 浏览: 124932 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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.首先是配置文件 

 

 

	<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条记录导出也很流畅,chrome,ff都没什么问题,ie9最后一行会不全……什么都不想说了

分享到:
评论
1 楼 fenglingne 2015-09-02  
不太懂,form提交到controller以后,就不明白了,还请您指点指点,不胜感激!项目急用。。。

相关推荐

Global site tag (gtag.js) - Google Analytics