文档章节

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

lgscofield
 lgscofield
发布于 2015/06/26 13:58
字数 512
阅读 90
收藏 0
点赞 0
评论 0
Jxls操作excel的时候,数据里面同时有规则的List/Map数据,同时又有不规则的,零星组织的数据,在这里,统统可以用此方法解决,具体方法如下,包括完整的类文件,导出Excel的时候需要有一个模板,模板中的各项数据请使用EL表达式的方式${list.userName...}诸如此类方式即可写入值...
//#################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####################//

本文转载自:http://lgscofield.iteye.com/blog/1496801

共有 人打赏支持
lgscofield

lgscofield

粉丝 20
博文 105
码字总数 63036
作品 0
南京
架构师
JExcel 的基本操作demo

面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可供使用,一个是...

json_wjw ⋅ 2016/09/20 ⋅ 0

nature/kunter-generator

kunter-generator Git@OSC GitHub Bitbucket Coding 因服务器问题,Maven私库无法提供服务,如需下载kunter-base包请私信我 特别声明:因为采用了12c特有分页语法,本工具Oracle暂时不支持O...

nature ⋅ 2015/06/03 ⋅ 0

Excel4J v2.1.0版本更新,Java 快速操作 Excel 工具

java基于poi实现快速操作Excel的工具[v2.1.0]版本更新: v2.x新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注解读取E...

Crab2Died ⋅ 2017/10/28 ⋅ 7

快捷方便的Excel导入导出工具 Easy-Xls 1.0 版本发布

EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。 JAXB处理中文xml...

Liuzh_533 ⋅ 2014/10/09 ⋅ 21

jxls 操作excel案例

需要的jar包: excel里面的配置信息: <jx:forEach items="${departments}" var="department" varStatus="status"> <jx:if test="${department.line==0}" > ${status.index} ${department.t......

快慢机 ⋅ 2011/12/27 ⋅ 0

Excel4J v2.0.0,Java 快速操作 Excel 工具

Excel4J v2.0.0 发布了,更新如下: v2.0.0新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注解读取Excel内容了,内容存...

Crab2Died ⋅ 2017/06/16 ⋅ 7

快捷方便的Excel导入导出工具--Easy-Xls

EasyXls 使用EasyXls可以使你很方便的操作Excel。本项目目的是解决简单的(不带任何样式)xls文件的导入导出。 处理XML时由于使用了JAXB,所以需要使用jdk1.6u14以上版本。 JAXB处理中文xml...

Liuzh_533 ⋅ 2013/04/12 ⋅ 0

自动化excl学习笔记

学习excl操作 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import java.util.A......

知止内明 ⋅ 2017/11/21 ⋅ 0

springmvc导出excel并弹出下载框

加入对应的jar包,包括springmvc,poi的, spring jar包在此不列举出来,主要是poi包,如下图所示 ![在此输入图片描述]1实体类: 控制器类: import java.io.BufferedInputStream;import java...

那位先生 ⋅ 2014/08/06 ⋅ 27

excel 操作 以下内容仅限拿到FileItem对象时操作使用

InputStream ins =FileItem.getInputStream(); // 设置读文件编码 WorkbookSettings setEncode = new WorkbookSettings(); setEncode.setEncoding("UTF-8"); Workbook rwb = Workbook.getWo......

随风而浮沉 ⋅ 2016/09/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具

压缩打包介绍 使用压缩工具的好处: 使用压缩文件,不仅可以节省磁盘空间,而且在传输时还能节省网络宽带。 我们通常讲的家用宽带和机房宽带100M是有区别的: 机房宽带的上行和下行都是100M,...

Linux_老吴 ⋅ 24分钟前 ⋅ 0

SpringBoot热部署加持

概述 进行SpringBoot的Web开发过程中,我们很多时候经常需要重启Web服务器才能保证修改的 源代码文件、或者一些诸如xml的配置文件、以及一些静态文件生效,这样耗时又低效。所谓的热部署指的...

CodeSheep ⋅ 31分钟前 ⋅ 0

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 今天 ⋅ 5

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部