使用Jxls操作Excel的方式,针对excel中的数据为List/Map,或非List组合的操作

[color=cyan][b]Jxls操作excel的时候,数据里面同时有规则的List/Map数据,同时又有不规则的,零星组织的数据,在这里,统统可以用此方法解决,具体方法如下,包括完整的类文件,导出Excel的时候需要有一个模板,模板中的各项数据请使用EL表达式的方式${list.userName...}诸如此类方式即可写入值...[/b][/color]
//#################start##################//
public class JxlsResult extends StrutsResultSupport {
/**
*
*/
private static final long serialVersionUID = -9095565761135848980L;
private String fileName;
private String root;

public JxlsResult() {
super();
}

public JxlsResult(String location) {
super(location);
}

@SuppressWarnings("unchecked")
protected void doExecute(String location, ActionInvocation invocation)
throws Exception {
HttpServletResponse response = (HttpServletResponse) invocation
.getInvocationContext().get(StrutsStatics.HTTP_RESPONSE);
ServletContext servletContext = (ServletContext) invocation
.getInvocationContext().get(StrutsStatics.SERVLET_CONTEXT);

InputStream template = new FileInputStream(servletContext
.getRealPath(location));
Map beans = getBeans(invocation);
String fileName = getFileName();

ByteArrayOutputStream out = new ByteArrayOutputStream();

Workbook workbook = new XLSTransformer().transformXLS(template, beans);
workbook.write(out);

byte[] result = out.toByteArray();

fileName = fileName == null ? invocation.getProxy().getActionName()
: conditionalParse(fileName, invocation) + ".xls";

response.setContentType("application/vnd.ms-excel");
response.setContentLength(result.length);
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileName + "\"");
response.getOutputStream().write(result);
}

@SuppressWarnings("unchecked")
private Map getBeans(ActionInvocation invocation) {
Object rootObj = root == null ? invocation.getAction() : invocation
.getStack().findValue(root);
return new BeanMap(rootObj);
}

private String getFileName() {
return new StringBuffer()
.append(fileName == null ? "report" : fileName).append(".xls")
.toString();
}

public void setFileName(String fileName) {
this.fileName = fileName;
}

public void setRoot(String root) {
this.root = root;
}
}
//#################end ##################//

以下为第二种方法
//#################start##################//
/**
* export Excel_2
*
* @author Lgscofield
*/
@SuppressWarnings("unchecked")
public void exportExcel() {
try {
listBuildLandOwnership = (List<BuildLandOwnershipVO>) ServletActionContext.getRequest()
.getSession().getAttribute("listBuildLandOwnership");
BuildLandOwnershipVO blVO = (BuildLandOwnershipVO) ServletActionContext.getRequest()
.getSession().getAttribute("blVO");
List<BuildLandOwnershipVO> header = new ArrayList<BuildLandOwnershipVO>();
if (blVO != null) {
blVO.setHmj(blVO.getHmj() + "");
blVO.setGmj(blVO.getGmj() + "");
blVO.setHmj(blVO.getHmj() + "");
blVO.setNydHj(blVO.getNydHj() + "");
blVO.setNydHjg(blVO.getNydHjg() + "");
blVO.setNydHjj(blVO.getNydHjj() + "");
blVO.setMj01(blVO.getMj01() + "");
blVO.setMj01g(blVO.getMj01g() + "");
blVO.setMj01j(blVO.getMj01j() + "");

blVO.setMj02(blVO.getMj02() + "");
blVO.setMj02g(blVO.getMj02g() + "");
blVO.setMj02j(blVO.getMj02j() + "");

blVO.setMj03(blVO.getMj03() + "");
blVO.setMj03g(blVO.getMj03g() + "");
blVO.setMj03j(blVO.getMj03j() + "");

blVO.setMj04(blVO.getMj04() + "");
blVO.setMj04g(blVO.getMj04g() + "");
blVO.setMj04j(blVO.getMj04j() + "");

blVO.setQtNyd(blVO.getQtNyd() + "");
blVO.setQtNydg(blVO.getQtNydg() + "");
blVO.setQtNydj(blVO.getQtNydj() + "");

blVO.setJmjgkyd(blVO.getJmjgkyd() + "");
blVO.setJmjgkydg(blVO.getJmjgkydg() + "");
blVO.setJmjgkydj(blVO.getJmjgkydj() + "");

blVO.setJtyd(blVO.getJtyd() + "");
blVO.setJtydg(blVO.getJtydg() + "");
blVO.setJtydj(blVO.getJtydj() + "");

blVO.setSlyd(blVO.getSlyd() + "");
blVO.setSlydg(blVO.getSlydg() + "");
blVO.setSlydj(blVO.getSlydj() + "");

blVO.setJsdHj(blVO.getJsdHj() + "");
blVO.setJsdHjg(blVO.getJsdHjg() + "");
blVO.setJsdHjj(blVO.getJsdHjj() + "");

blVO.setWlytd(blVO.getWlytd() + "");
blVO.setWlytdg(blVO.getWlytdg() + "");
blVO.setWlytdj(blVO.getWlytdj() + "");

blVO.setQtWlytd(blVO.getQtWlytd() + "");
blVO.setQtWlytdg(blVO.getQtWlytdg() + "");
blVO.setQtWlytdj(blVO.getQtWlytdj() + "");

blVO.setWlyHj(blVO.getWlyHj() + "");
blVO.setWlyHjg(blVO.getWlyHjg() + "");
blVO.setWlyHjj(blVO.getWlyHjj() + "");
header.add(blVO);
}

if (listBuildLandOwnership != null) {
String fileName = null;
try {
fileName = URLEncoder.encode("土地利用现状权属审核(分析)表.xls", "utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}

Map beans = new HashMap();
beans.put("header", header);
beans.put("listBuildLandOwnership", listBuildLandOwnership);
ServletContext sc = (ServletContext) ActionContext.getContext().get(
ServletActionContext.SERVLET_CONTEXT);
String location = sc.getRealPath("/export/BloAnalysis.xls");
ServletActionContext.getResponse()
.setContentType("text/vnd.ms-excel;charset=UTF-8");
ServletActionContext.getResponse().setHeader("Content-Disposition",
"attachment; filename=\"" + fileName + "\"");

InputStream template = new FileInputStream(location);
ByteArrayOutputStream out = new ByteArrayOutputStream();
Workbook workbook = new XLSTransformer().transformXLS(template, beans);
workbook.write(out);
byte[] result = out.toByteArray();
ServletActionContext.getResponse().setContentLength(result.length);
ServletActionContext.getResponse().getOutputStream().write(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//##################end####################//
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值