关于导出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);
关于导出Excel表中存在部门或用户数据权限问题的更多相关文章
- exp导出一个表中符合查询条件的数据
原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50 ...
- PHP将数据导出Excel表中(投机型)
1.简介 如何利用最简单粗糙暴力的方法将数据写入Excel文件中呢? 因为ms word和excel的文档都支持html文本格式,因此我们可以基于这个原理采用html文本格式进行数据的输出. 在htm ...
- 选择性导出excel表中内容
package com.huawei.utils; import java.io.FileNotFoundException;import java.io.FileOutputStream;impor ...
- Jmeter----读取excel表中的数据
Jmeter 读取excel数据使用的方法是使用CSV Data Set Config参数化,之后使用BeanShell Sampler来读取excel表中的数据 第一步.查看所需的接口都要哪些字段和 ...
- ASP.NET 导出gridview中的数据到Excel表中,并对指定单元格换行操作
1. 使用NPOI读取及生成excel表. (1)导出Click事件: 获取DataTable; 给文件加文件名: string xlsxName = "xxx_" + DateT ...
- C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation
C# asp.net中导出Excel表时总出现"只能在执行 Render() 的过程中调用 RegisterForEventValidation 后台添加以下方法:/// <summa ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- 【ITOO 1】将List数据导出Excel表
需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中.再进行判空处赋值处理,以及去重处理.这篇博客,主要介绍读取excel表和导出excel表的方法 ...
- ASP.NET导出excel表方法汇总
asp.net里导出excel表方法汇总 1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...
随机推荐
- vue.js 强行赋值、刷新数组或者对象 方法之 $.set()
实际开发过程中,数据交互的的时候需要赋值,刷新,但是不可能每次赋值之后都刷新整个页面,所以就要用到 vue.js方法 $.set(),能实现赋值对象的局部刷新 语法:Vue.set(object, k ...
- linux kali 的ifconfig命令
ifconfig命令 1.ifconfig执行页面 root@localhost:/home/zys# ifconfig lo: flags=73<UP,LOOPBACK,RUNNING> ...
- Session服务器之Session复制!
全部运行在Tomcat下 第一台主机:192.168.200.131 安装nginx 修改hosts文件 [root@localhost ~]# vim /etc/hosts 192.168.200 ...
- Java的进制转换
十进制转其它进制 其它进制转十进制 A进制转B进制可以将十进制作为中间媒介 Integer.toString(int i, int radix) 返回用第二个参数指定基数表示的第一个参数的字符串表示形 ...
- leetCode练题——14. Longest Common Prefix
1.题目 14. Longest Common Prefix Write a function to find the longest common prefix string amongst a ...
- Mac OS删除文件夹和文件的命令
https://www.jianshu.com/p/0376bf0514e3 2017.08.18 17:27* 字数 219 阅读 16709评论 0喜欢 0 rmdir删除空目录,不过一旦目录非空 ...
- 将UIImage转换成圆形图片image
建议写成UIImage分类,如下: .h //变成圆形图片 - (UIImage *)circleImage; .m //变成圆形图片 - (UIImage *)circleImage { // NO ...
- 什么是 SDK?
通俗而言: 1.其实很简单,SDK 就是 Software Development Kit 的缩写,中问意思是: 软件开发工具包. 2.这是一个覆盖面相当广泛的名词,可以这么说: 辅助开发某一类软件的 ...
- Java基础 -4
IF分支结构 在程序开发的过程中 一共会存在有三组程序逻辑:顺序结构.分支结构.循环结构 if分支结构主要是针对关系表达式进行判断处理的分支操作. if判断 public static void ma ...
- LeetCode中等题(二)
题目一: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复 ...