由于最近公司业务需要,所以记录一下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);
}```
总结:无非就是查到指定的数据,然后进行导出~
热爱生活,热爱学习~