zoukankan      html  css  js  c++  java
  • 关于导出Excel表中存在部门或用户数据权限问题

    /**
    * 导出Controller
    */
    @RequiresPermissions("xxx:weeklightlimit:download")
    @RequestMapping("/DownLoad")

    //注意:关于权限问题必须将@RequestParam Map<String, Object> params放在HttpServletResponse response前,否则系统会报错:("msg":"数据权限接口,只能是Map类型参数,且不能为NULL","code":500})
    public R DownLoad(@RequestParam Map<String, Object> params,HttpServletResponse response){
    LimitService.downLoadList(params,response);
    return R.ok();
    }

    //接口实现类

    @DataFilter(subDept=true,user=false,tableAlias="a",deptId="dept_id",userId="user_id")
    @Override
    public void downLoadList(Map<String, Object> params,HttpServletResponse response) {
    try {
    String title="参数信息.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 num=row.createCell(0);
    num.setCellValue("参数");
    XSSFCell  num001=row.createCell(1);
    num001.setCellValue("参数1");
    XSSFCell  num002=row.createCell(2);
    num002.setCellValue("参数2");
    XSSFCell  num003=row.createCell(3);
    num003.setCellValue("参数三");

    SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /*----------------------------------------------------------------------------------*/
    //开始获取需要导入到excel中的数据
    //根据x名查询DetailEntity表中所有信息
    Page<XxxEntity> pagination =(Page<XxxEntity>)new Query<XxxEntity>().getPage(params);
    //根据x名查询DetailEntity表中所有信息
    List<XxxEntity> list = (List<XxxEntity>) baseMapper.getWeekLightLimit(pagination,params);
    int dataIndex=1;//取行索引
    for(XxxEntityweek xxxEntity:list)
    {

    XSSFRow datarow=sheet.createRow(dataIndex);//创建数据的第一行
    XSSFCell idDate=datarow.createCell(0);
    idDate.setCellValue(xxxEntity.getId());

    XSSFCell deptIdDate=datarow.createCell(1);
    deptIdDate.setCellValue(xxxEntity.getDeptId());

    XSSFCell oltpwrDate=datarow.createCell(2);
    oltpwrDate.setCellValue(xxxEntity.getOltpwr());

    XSSFCell ontpwrDate=datarow.createCell(3);
    ontpwrDate.setCellValue(xxxEntity.getOntpwr());

    dataIndex++;
    }
    workbook.write(os);
    os.flush();
    os.close();
    workbook.close();
    }
    catch (Exception e) {
    System.out.println(e);
    }

    }

    //注意:当添加DataFilter过滤器注解时,只能拦截到baseMapper接口的方法,同时注意在sql语句添加条件判断语句:

    <where>

    <if test="params.sql_filter!=null">
    and ${params.sql_filter}
    </if>
    </where>

    获取到的参数(接受到的参数)也必须有params.来引用;例如:

    <choose>
    <when test="params.sidx !='' and params.order!= null">
    ORDER BY a.${params.sidx} ${params.order}
    </when>
    <otherwise>
    ORDER BY a.id asc
    </otherwise>
    </choose>

    //根据x名查询DetailEntity表中所有信息
    Page<XxxEntity> pagination =(Page<XxxEntity>)new Query<XxxEntity>().getPage(params); 
    //根据x名查询DetailEntity表中所有信息
    List<XxxEntity> list = (List<XxxEntity>) baseMapper.getWeekLightLimit(pagination,params); 

  • 相关阅读:
    30天养成一个好习惯
    ym——安卓巴士总结了近百个Android优秀开源项
    内存泄漏以及常见的解决方法
    Android学习笔记(四十):Preference的使用
    Android中View绘制流程以及invalidate()等相关方法分析
    NumberFormat 类
    开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store
    memset函数具体说明
    分分钟教会你使用HTML写Web页面
    UVA 465 (13.08.02)
  • 原文地址:https://www.cnblogs.com/pureray-hui/p/12375965.html
Copyright © 2011-2022 走看看