Spring +EasyUi+Spring Jpa(持久层)

EasyUi通过POI 实现导出xls表格功能

  EasyUi界面:

  

  点击导出按钮实现数据导入到xls表格中

  第一步:修改按钮事件:

@Controller
@ParentPackage("struts-default")
@Namespace("/")
@Scope("prototype")
public class SubAreaAction extends ActionSupport implements ModelDriven<Subarea>

  //注入service层

  @Resource
      private SubAreaservice subareaservice;    

  //导出按钮绑定的事件
            function doExport() {

    //实现访问action的有三种方式:form表单提交、js中调用submit方法、location.href。
                location.href="${pageContext.request.contextPath}/subArea_Export.action"
            }

第二步:在action中提供方法:

    
    @Action(value = "subArea_Export")
    public String subAreaExport() throws IOException {
        // 查询所有的数据
        List<SubArea> list = subareaservice.findSubArea();
        if (list != null && list.size() > 0) {
          //2.创建空的excel文件,在sheet页中设置标题行
          //2.1使用workbook创建空excel
            HSSFWorkbook wb = new HSSFWorkbook();

     //2.2在excel中创建空sheet
            HSSFSheet cs = wb.createSheet();
           //2.3在sheet中创建标题行
            HSSFRow row = cs.createRow(0);

//2.4在标题行创建单元格,赋值
            row.createCell(0).setCellValue("分区编号");
            row.createCell(1).setCellValue("分区地址");
            row.createCell(2).setCellValue("分区关键字");
            row.createCell(3).setCellValue("分区辅助关键字");
            row.createCell(4).setCellValue("区域编号");
            int index = 1;

  //3.循环分区数据,将数据填充到excel中
            for (SubArea subarea : list) {

      //创建新行
                HSSFRow row1 = cs.createRow(index++);

      //创建新单元格,赋值
                row1.createCell(0).setCellValue(subarea.getId());
                row1.createCell(1).setCellValue(subarea.getAddress());
                row1.createCell(2).setCellValue(subarea.getKeyWords());
                row1.createCell(3).setCellValue(subarea.getAssistKeyWords());

  
                if (subarea.getFixedArea() != null) {
                    row1.createCell(4).setCellValue(subarea.getFixedArea().getId());
                } else {
                    row1.createCell(4).setCellValue("信息未初始化");
                }
            }
           //4.设置文件下载响应参数:文件名、一个流两个头
            String filename = "ceshi.xls";

    //获取浏览器类型
            String header = ServletActionContext.getRequest().getHeader("User-Agent");
            
            String mimeType = ServletActionContext.getServletContext().getMimeType(filename);
            filename = FileUtils.encodeDownloadFilename(filename, header);
           //一个流:response的输出流
            ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();
            //两个头之一:content-type,告诉浏览器返回的数据格式
            ServletActionContext.getResponse().setContentType(mimeType);

    //两个头之二:content-disposition,告诉浏览器打开数据的方式,下载方式打开:attachment;filename=【文件名】
            ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename=" + filename);

//5.使用response将文件返回到前台
            wb.write(os);
        }
        return NONE;
    }

第三步:通过controller层调用service层

@Service
@Transactional
public class SubAreaserviceimp implements SubAreaservice {

  @Override
    public List<SubArea> findSubArea() {
        // TODO Auto-generated method stub
        return subareadao.findAll();
    }

}

由于此测试持久层用到JPA所以不能处理持久层的代码了。

直接测试。

测试结果如图:

EasyUi通过POI 实现导出xls表格功能的更多相关文章

  1. 【POI】导出xls文件报错:The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook

    使用POI导出xls文件,由于数据过多,导致导出xls报错如下: The maximum number of cell styles was exceeded. You can define up t ...

  2. EasyUi通过OCUpload上传及POI上传 实现导入xls表格功能

    Easyui上传文件案例 第一步:要想使用OCUpload首先前端需要导入js包         <script type="text/javascript" src=&qu ...

  3. java操作Excel的poi的导出Excel表格

    页面布局 点击导出用户:触发函数,直接访问后台 后台方法如下: public String export()throws Exception{ Connection con=null; try { c ...

  4. Spring Boot:添加导出Excel表格功能

    1.添加POI依赖 2.创建EXCEL实体类 3.创建表格工具类 4.创建ExcelConstant 5.创建ExcelController 1.添加POI依赖 <dependency> ...

  5. React+后端实现导出Excle表格的功能

    最近在做一个基于React+antd前端框架的Excel导出功能,我主要在后端做了处理,根据以下步骤,可以很容易就实现导出Excel表格数据的功能. 在做这类导出文件的功能,其实,在后端进行处理,会更 ...

  6. poi自动生成Ecxel表格和Chart图表

    最近因为业务需求,需要做poi自动导出Ecxel表格和Chart折线图的功能. 所以我在网上找到了一篇关于poi生成Chart图表的博客,代码很详细,但是缺少相关注释说明. 想要将它改造成自己需要的样 ...

  7. Apache POI导出excel表格

    项目中我们经常用到导出功能,将数据导出以便于审查和统计等.本文主要使用Apache POI实现导出数据. POI中文文档 简介 ApachePOI是Apache软件基金会的开放源码函式库,POI提供A ...

  8. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  9. 使用JAVA导出EXCEL表格(POI)

    一.POI概述 Jakarta POI 是一套用于访问微软格式文档的Java API.POI提供API给Java程序对Microsoft Office格式档案读和写的功能.在许多企业办公系统中,经常会 ...

随机推荐

  1. mysql 数据库操作 数据库的增删改查

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  2. NPM常用命令install 淘宝镜像 update等

    NPM是随同NodeJS一起安装的包管理工具,允许用户从NPM服务器上传下载安装第三方包或命令行程序,能解决NodeJS代码部署上的很多问题,非常方便.下面我们一起来看看常用的npm命令有哪些 使用方 ...

  3. 使用RegisterNatives注冊原生代码

    在Android开发本地代码时,有两种方式.一种是使用javah生成头文件.然后编辑源码,还有一种不用生成头文件,直接编辑代码后,使用RegisterNatives方法进行注冊,以下是一个Demo: ...

  4. C++的函数功能总结

    1. string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,返回npos. 2.string的substr(pos=0, count=npos)返回字符串[pos, pos+ ...

  5. python线程中的join(转)

    Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知识点一:当一个进程启动之后,会默认产生一个主线程,因为线程是程序执行流的最小单元,当设置多 ...

  6. 模仿以太坊 ERC20 规范的 Hyperledger Fabric 实现 Token 通证

    合约: package main /* -------------------------------------------------- Author: netkiller <netkill ...

  7. react 嵌套组件的通信

    在react中经常会用到的组件嵌套,如下: 图中 parent本身是一个自定义的组件,然后内部又加入了 child的自定义组件,那么这种情况,父子之间如何通信 react中在父组件里面有一个 this ...

  8. Amazon RDS多区域高可用测试

    最近在AWS上面需要部署一组多区域RDS集群,AWS的多区域简单理解就是RDS一主一从分别在当地的两个机房(两个区域).所以就有了下面各方面的测试. 我们需要测试什么? Primary挂掉时,Seco ...

  9. sklearn_线性回归

    1. 普通线性回归 Linear Regression (1)目标: class sklearn.linear_model.LinearRegression (fit_intercept=True, n ...

  10. Hybrid设计--Hybrid中Native能力的设计

    稍微成熟的团队,header一定是不利于业务的UI组件,这个组件会封装在view层,方便前端使用.对业务前端开发来说,不用关注header是如何实现的,只用框架层释放的API.(一个前端有一个自己的U ...