Java+Freemarker导出excel

阅读更多

在项目中使用Freemarker功能如下:

1.一般我们在项目中使用freemarker最多的是做页面功能,我们只需要model+html+freemarker标签,生成我们需要的页面。
2.我们可以使用freemarker标签功能,我们可以动态生成sql语句等等
3.我们可以使用freemarker导出excel和word等等

本文介绍freemarker导出excel功能

freemarker代码如下:



	



  
	  <#if datas??&&((datas?size)>0)>
		  <#list datas as data>
		  
标题1 标题2 标题3
${data.id!''} ${data.name!''} ${data.age!''}


spring配置如下:

		
		
		



java代码如下:
package test;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.taglibs.standard.tag.common.core.OutSupport;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfig;


import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class ExcelExport {
	
	@Resource
	private FreeMarkerConfig freeMarkerConfig;
	
	@Test
	public void exportExce()
	{
		try {
			List list = testService.queryForList();
			//指定freemarker的加载基本路径,重要
			freeMarkerConfig.getConfiguration().setDirectoryForTemplateLoading(new File("D:\\java\\test\\WebROOT\\WEB-INF\\freemarker\\"));
			
			//获取模板
			Template template = freeMarkerConfig.getConfiguration().getTemplate("admin\\excel\\test1.ftl");
			
			//xlsx最大容纳1048576行 ,csv最大容纳1048576行,xls最大容纳65536行
			//86000
			for(int i=0; i < 10; i++)
			{
				list.addAll(list);
			}

			Map map = new HashMap();
			map.put("datas", list);
			
			createExcel(template, map);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void createExcel(Template template, Map map)
	{
		try {
			Writer out = new OutputStreamWriter(new FileOutputStream("E:\\123.xlsx"));
			template.process(map, out);
		} catch (TemplateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


excel样式如下
Java+Freemarker导出excel_第1张图片

注意:如果数据量大于65536甚至更大,freemarker很难分sheet导出,所以就可以生成几个excel,然后压缩并下载


欢迎交流企鹅群:211367604
  • Java+Freemarker导出excel_第2张图片
  • 大小: 1.9 KB
  • 查看图片附件

你可能感兴趣的:(excel,freemarker,java,spring,bean)