当前位置: 首页 > article >正文

Java实现下载excel模板,并实现自定义下拉框

@GetMapping("excel/download")
	@ApiOperation(value = "模板下载")
	public void getUserRecordTemplate(HttpServletResponse response, HttpServletRequest request) throws IOException {

		

		OutputStream outputStream = response.getOutputStream();
		InputStream inputStream = new ClassPathResource("example/excel/download_template_user_record.xlsx").getInputStream();
		try {

			String fileName = "导入模板";
			String fileName3 = URLEncoder.encode(fileName, "utf-8");
			response.setHeader("Content-disposition", "attachment;filename*=utf-8''"+fileName3+".xlsx");
			response.setContentType("application/msexcel");// 定义输出类型
			response.setCharacterEncoding("UTF-8");

			//获取该类声明的所有字段
			Field[] fields = UserRecordExcelExportResult.class.getDeclaredFields();

			//响应字段对应的下拉集合
			Map<Integer, String[]> map = new HashMap<>();
			Field field = null;
//从数据库里获取下拉框选项
			List<XcUserLevel> list = xcUserLevelService.list();
//			List<SysDept> list1 = sysDeptService.list();
			List<String> collect = list.stream().map(XcUserLevel::getName).collect(Collectors.toList());
//			List<String> collect1 = list1.stream().map(SysDept::getName).collect(Collectors.toList());
//找到需要对应的下拉框位置
//			map.put(11,collect1.toArray(new String[0]));
			map.put(12,collect.toArray(new String[0]));
			// 循环判断哪些字段有下拉数据集,并获取
			/*for (int i = 0; i < fields.length; i++) {
				field = fields[i];
				// 解析注解信息
				DropDownSetField dropDownSetField = field.getAnnotation(DropDownSetField.class);
				if (null != dropDownSetField) {
					//调用下拉框数据源的方法
					String[] source = ResoveDropAnnotationUtil.dynamicListResove2(dropDownSetField, field.getName(),staffId);
					if (null != source && source.length > 0) {
						map.put(i, source);
					}
				}
			}*/

			ExcelWriter excelWriter = EasyExcel.write(outputStream)
//将保存下拉框的map放入excelWriter
					.registerWriteHandler(new CustomSheetWriteHandler(map))
					.withTemplate(inputStream)
					.build();

			WriteSheet writeSheet = EasyExcel.writerSheet(0,"Sheet1").build();
				excelWriter.write(new ArrayList<>(), writeSheet);
			excelWriter.finish();
			outputStream.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

从resoues包里获取excel文件


http://www.kler.cn/a/464266.html

相关文章:

  • 遇到复杂的 递归查询sql 需要oracle 转pgsql 可以把数据表结构给ai
  • vue3 css实现文字输出带光标显示,文字输出完毕,光标消失的效果
  • 如何安装适配pytorch版本的torchvision
  • Megatron - LM 怎么进行模型切分的,怎么匹配服务器的
  • 一文讲清楚HTTP常见的请求头和应用
  • Flutter中的网络请求图片存储为缓存,与定制删除本地缓存
  • 应用架构模式
  • Python 列表的高级索引技巧
  • axios 实现进度监控
  • 第3章 总线
  • 搭建开源版Ceph分布式存储
  • 跨域问题解决
  • Java网络套接字
  • 云原生架构:构建高效、可扩展的微服务系统
  • 【LeetCode Hot100 二分查找】搜索插入位置、搜索二维矩阵、搜索旋转排序数组、寻找两个正序数组的中位数
  • 获取淘宝分类详情:深入解析taobao.cat_get API接口
  • leetcode热题100(739. 每日温度)单调栈c++
  • 革新排版机产线:一体式IO模块引领自动化高效控制新时代
  • orm03
  • js 文档注释
  • springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)
  • 2025-1-2-sklearn学习(30)模型选择与评估-验证曲线: 绘制分数以评估模型 真珠帘卷玉楼空,天淡银河垂地。
  • 基于BP训练深度学习模型(用于回归)以及验证误差值
  • A*算法与人工势场法结合的路径规划(附MATLAB源码)
  • 基于Matlab实现离散点云数据三维表面重构程序(源码+数据)
  • 设计模式-创建型模式-工厂方法模式详解