zoukankan      html  css  js  c++  java
  • 进阶之路005 增删改查/数据导入导出之导出功能

    1,在pom.xml中注意添加poi依赖

    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.0.1</version>
    </dependency>

    2,//Controller层

    /**
    * 导出
    */
    @RequestMapping("/heroDownLoad")
    public R heroDownLoad(HttpServletResponse response ,@RequestParam Map<String, Object> params){
    sysHeroService.downLoadList(response);
    return R.ok();
    }

    3,//Service接口

    //导出
    void downLoadList(HttpServletResponse response);

    4,//接口实现类

    //导出表单
    @Override
    public void downLoadList(HttpServletResponse response) {
    try {
    String title="XXX表信息.xlsx";
    XSSFWorkbook workbook = new XSSFWorkbook();
    response.setCharacterEncoding("utf-8");
    //以下设置格式
    response.setHeader("conent-type", "application/octet-stream");
    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
    response.setHeader("charset", "utf-8");
    response.setHeader("content-disposition","attachment;filename="+new String(title.getBytes("gbk"), "ISO8859-1"));
    /*--------------------------------------------------------------------------------*/
    OutputStream os = response.getOutputStream();
    XSSFSheet sheet=workbook.createSheet("text");
    //创建第一行标题行
    XSSFRow row=sheet.createRow(0);//创建标题行
    XSSFCell id=row.createCell(0);
    id.setCellValue("属性");
    XSSFCell enHeroName=row.createCell(1);
    enHeroName.setCellValue("属性1");
    XSSFCell heroName=row.createCell(2);
    heroName.setCellValue("属性2");
    XSSFCell title01=row.createCell(3);
    title01.setCellValue("属性3");
    /*----------------------------------------------------------------------------------*/
    //开始获取需要导入到excel中的数据
    List<SysXxxEntity> list=sysXxxDao.getXxx(null,null,null,null);
    int dataIndex=1;//取行索引
    for(SysXxxEntity sysXxxEntity:list)
    {
    XSSFRow datarow=sheet.createRow(dataIndex);//创建数据的第一行
    XSSFCell 属性Date=datarow.createCell(0);
    属性.setCellValue(sysXxxEntity.get属性());

    XSSFCell 属性1Date=datarow.createCell(1);
    属性1.setCellValue(sysXxxEntity.get属性1());

    XSSFCell 属性2Date=datarow.createCell(2);
    属性2.setCellValue(sysXxxEntity.get属性2());

    XSSFCell 属性3Date=datarow.createCell(3);
    属性3.setCellValue(sysXxxEntity.get属性3());
    dataIndex++;
    }
    workbook.write(os);
    os.flush();
    os.close();
    workbook.close();
    }
    catch (Exception e) {
    System.out.println(e);
    }

    }

  • 相关阅读:
    Medium | LeetCode 142. 环形链表 II
    Easy | LeetCode 141. 环形链表
    Hard | LeetCode 23. 合并K个升序链表 | 分治 | 优先队列
    std(19)内置算法find find_if
    stl(18)内置算法for_each transform
    C++引用和指针比较 指针常量和常量指针
    #pragma once和#ifndef用法
    c++变量的一些注意点 extern关键字的使用
    比特 字节 地址 类型 编码 32位 64位
    stl(16)stl内置的一些函数对象
  • 原文地址:https://www.cnblogs.com/pureray-hui/p/12371994.html
Copyright © 2011-2022 走看看