java后端Excel导出

5 篇文章 0 订阅
4 篇文章 0 订阅

由于最近公司业务需要,所以记录一下Excel的导出功能实现,全部代码展示!

RegionSetting
public interface RegionSettingMapper extends MyMapper<RegionSetting> {

}

```java
RegionSetting
@Data
@Table(name = "region_setting")
public class RegionSetting {
    @Id
    private String oid;                //UUID
    private String organizationid;     //组织id
    private String name;               //区域名称
    private String region_num;  //区域编号
    private String region_superior;          //上级区域
    @Transient
    private String region_superior_name;
    private String region_level;    //等级
    private String description;         //描述
    private String creator;            //创建人
    private Date creationtime;       //创建时间
    private String modifier;           //修改人
    private Date modificationtime;   //修改时间
    private String delete_state;//删除状态,0为否1位是
}
```RegionSettingVo
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegionSettingVo {


    @Excel(name = "序号", width = 40.0)
    private String oid;
    @Excel(name = "区域名称")
    private String name;

    @Excel(name = "区域编号")
    private String region_num;

    @Excel(name = "上级编号", width = 40.0)
    private String superior;

    @Excel(name = "上级名称")
    private String supname;

    @Excel(name = "区域等级")
    private String region_level;

    @Excel(name = "描述", width = 60.0)
    private String description;

}
	RegionSettingService
 @SneakyThrows
    public void downLoad(HttpServletResponse resp) {
        //获取当前用户ID
        ProfileResult primaryPrincipal = (ProfileResult) SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal();
        String userId = primaryPrincipal.getOid();
        //远程调用,通过获取当前用户的oid获取机构id
        Map<String, Object> orgMap = userClient.getCurrentOrgInfo(userId);
        CjaOrganization organizationid = (CjaOrganization) FastJsonUtils.json2Bean(FastJsonUtils.bean2Json(orgMap.get("organization")), CjaOrganization.class);
        Example example = new Example(RegionSetting.class);
        final Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("organizationid", organizationid.getOid()).andEqualTo("delete_state", "0");
        System.out.println(organizationid.getOid());
        //查询所需要的数据:根据获取当前登录用户的机构ID 查询当前数据库里面相同机构的ID数据
        List<RegionSetting> regionSettings = regionSettingMapper.selectByExample(example);
        //创建一个List集合,方便后续存放数据
        List<RegionSettingVo> All = new ArrayList<>();
        for (RegionSetting regionSetting : regionSettings) {
            //创建Excel导出对象
            RegionSettingVo regionSettingVo = new RegionSettingVo();
            regionSettingVo.setName(regionSetting.getName());
            regionSettingVo.setRegion_num(regionSetting.getRegion_num());
            regionSettingVo.setOid(regionSetting.getOid());
            regionSettingVo.setSuperior(regionSetting.getRegion_superior());
            RegionSetting regionSetting1 = regionSettingMapper.selectByPrimaryKey(regionSetting.getRegion_superior());
            if (regionSetting1 == null) {
                regionSettingVo.setSupname("");
            } else {
                regionSettingVo.setSupname(regionSetting1.getName());
            }
            regionSettingVo.setRegion_level(regionSetting.getRegion_level());
            regionSettingVo.setDescription(regionSetting.getDescription());
            All.add(regionSettingVo);
        }

        // 创建Workbook这个对象
        // 第一个参数是一个ExportParams对象,这里直接new,
        // ExportParams对象里面的第一个参数是你自己定义的表的名字
        // ExportParams对象里面的第二个参数是你自己定义Excel中Sheet的名字
        // 第二个参数是实体类的class  第三个是你封装的集合
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("区域表", "区域详情"), RegionSettingVo.class, All);

        // 设置下载的头信息 使用URLEncoder.encode是为了解决编码问题
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("multipart/form-data");
        String fileName = "区域表.xls";
        resp.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
        ServletOutputStream os = resp.getOutputStream();
        // 用workbook对象直接写出输出流就可以
        workbook.write(os);
    }
```java
	RegionSettingController
    @RequestMapping(value = "/Explorer", name = "导出区域")
    public void Explorer(HttpServletResponse resp)  {
        regionSettingService.downLoad(resp);
    }```
总结:无非就是查到指定的数据,然后进行导出~
热爱生活,热爱学习~
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值