jxls+springmvc实现excel模板导出

[color=red][b]jxls1.*系列(最新版本1.0.6)是基于jdk5的,项目为1.5,1.6的话可以用1.*系列
jxls2.*系列(最新版本2.3.0)是基于jdk7的,项目必须为1.7以上才可以用2.*系列[/b][/color]
以下例子基于1.*系列,
(2.*系列excel模板的设计是使用excel批注实现,1.*系列使用标签实现)

0:pom中引入jar包

<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-reader</artifactId>
<version>1.0.6</version>
</dependency>


1:定义view
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jxls.transformer.XLSTransformer;

import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.servlet.view.AbstractView;

public class JxlsExcelView extends AbstractView {

private static final String CONTENT_TYPE = "application/vnd.ms-excel";

private String templatePath;

private String exportFileName;

/**
* @param templatePath 模版相对于当前classpath路径
* @param exportFileName 导出文件名
*/
public JxlsExcelView(String templatePath, String exportFileName) {
this.templatePath = templatePath;
this.exportFileName = exportFileName;
setContentType(CONTENT_TYPE);
}

@Override
protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,
HttpServletResponse response) throws Exception {

InputStream is = null;
OutputStream os = null;

os = response.getOutputStream();
response.setContentType(getContentType());

// 解决导出文件名中文乱码
String filename = new String(exportFileName.getBytes("gb2312"), "iso8859-1");
response.setHeader("content-disposition", "attachment;filename=" + filename + ".xls");

// 获取excel模板
is = JxlsExcelView.class.getClassLoader().getResourceAsStream(templatePath);

//转换成excel并输出
XLSTransformer transformer = new XLSTransformer();
Workbook workbook = transformer.transformXLS(is, model);

//将内容写入输出流并把缓存的内容全部发出去
workbook.write(os);
os.flush();
os.close();
is.close();
}
}


2:resources/jxls/template中设计模板online_user.xls

[img]http://dl2.iteye.com/upload/attachment/0119/3039/0d20b627-6f3c-3996-a194-fc0c6f4d78f7.png[/img]

3:调用
// 导出
@RequestMapping
public ModelAndView export(ActionContext context, HttpServletResponse response) throws Exception {
// 1:准备数据
List<OnlineUser> userList = getUserList();

// 2:数据放置到jxls需要的map中
Map<String,Object> modal = new HashMap<String,Object>();
modal.put("users", userList);
modal.put("totalCount", userList.size());

// 3:导出文件
return new ModelAndView(new JxlsExcelView("jxls/template/online_user.xls","在线用户列表"), modal);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值