excel导出代码实现

先查询 ,在导出 

实体类


@Data
//@TableName是mybatis-plus中的注解,主要是实现实体类型和数据库中的表实现映射。
@TableName("wsf_test")
//@Accessors(chain = true) 开启链式编程
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="wsf_test对象", description="测试")

public class WsfTest implements Serializable {
    private static final long serialVersionUID = 1L;

	/**主键*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private java.lang.String id;
	
	/**名字*/
//    @Excel(dictKey,dictExp)
//该注解属于一个字典注解,主要作用就是可以让一些数值型属性能自动转换字典值(注意需生成get/set)
	@Excel(name = "名字", width = 15)
    @ApiModelProperty(value = "名字")
    private java.lang.String name;
	/**年龄*/
	@Excel(name = "年龄", width = 15)
    @ApiModelProperty(value = "年龄")
    private java.lang.String age;
	/**性别*/
	@Excel(name = "性别", width = 15, dicCode = "sex")
//    @Dict数据字典
	@Dict(dicCode = "sex")
    @ApiModelProperty(value = "性别")
    private java.lang.String sex;

controller (第一种方法)

@RequestMapping(value = "/exportXls3")
	public void exportXls3(HttpServletResponse response) throws IOException {

			//查询要导出的数据
			List<WsfTest> telist = iWsfTestService.list(null);
			System.out.println(telist);
			// 创建Workbook这个对象
			// 第一个参数是一个ExportParams(ExportParams 导出参数)对象,这里直接new,
			// ExportParams对象里面的第一个参数是你自己定义的表的名字
			// ExportParams对象里面的第二个参数是你自己定义Excel中Sheet的名字
			// 第二个参数是实体类的class  第三个是你封装的集合
			Workbook workbook  = ExcelExportUtil.exportExcel(new ExportParams("测试导出", "sheetname名字"), WsfTest.class, telist);
			// 设置下载的头信息,设置Http响应头 使用URLEncoder.encode是为了解决编码问题
			response.setCharacterEncoding("utf-8");
			//设置文件ContentType类型(多部分/表单数据)
			response.setContentType("multipart/form-data");
			// 设置文件名字(文件头)
			String fileName = "区域表.xls";
			//使用Servlet实现文件下载的时候,避免浏览器自动打开文件
			response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
			//输出字符流
			ServletOutputStream os = response.getOutputStream();
			// 用workbook对象直接写出输出流就可以
			workbook.write(os);
			os.close();
			workbook.close();

		}

 controller(第二种方法)

@RequestMapping(value = "/exportXls1")
	public ModelAndView exportXls1(HttpServletRequest request, WsfTest wsfTest) {

		ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
//		获取导出数据
		List<WsfTest> pageList = iWsfTestService.list();
		//导出文件名称//此处设置的filename无效 ,前端会重更新设置一下
		mv.addObject(NormalExcelConstants.FILE_NAME,"TESTT2");
		//注解对象Class
		mv.addObject(NormalExcelConstants.CLASS,WsfTest.class);
		//自定义导出字段 		   mv.addObject(NormalExcelConstants.EXPORT_FIELDS,"name,keyWord,punchTime");
		//自定义表格参数
		mv.addObject(NormalExcelConstants.PARAMS,new ExportParams("导出1", "sheetname1"));
		//导出数据列表
		mv.addObject(NormalExcelConstants.DATA_LIST,pageList);
		return mv;

	}

controller(第三种  与第一种类似,但可以过滤到选中的数据)

 protected ModelAndView exportXls(HttpServletRequest request, T object, Class<T> clazz, String title) {
        // Step.1 组装查询条件
        QueryWrapper<T> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        // 过滤选中数据
        String selections = request.getParameter("selections");
        if (oConvertUtils.isNotEmpty(selections)) {
            List<String> selectionList = Arrays.asList(selections.split(","));
            queryWrapper.in("id",selectionList);
        }
        // Step.2 获取导出数据
        List<T> exportList = service.list(queryWrapper);

        // Step.3 AutoPoi 导出Excel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.FILE_NAME, title);
        mv.addObject(NormalExcelConstants.CLASS, clazz);
        //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
        ExportParams  exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
        exportParams.setImageBasePath(upLoadPath);
        //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
        mv.addObject(NormalExcelConstants.PARAMS,exportParams);
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }

想,都是问题;做,才有答案

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值