Browse Source

【更新】完善导出word的图片显示问题

pull/87/head
徐玉祥 2 years ago
parent
commit
db9393b182
  1. 19
      snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java
  2. BIN
      snowy-plugin/snowy-plugin-sys/src/main/resources/userExportTemplate.docx
  3. 18
      snowy-web-app/src/test/java/vip/xiaonuo/Test.java

19
snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java

@ -1003,13 +1003,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
} }
String fileName = "SNOWY2.0系统B端用户信息清单.xlsx"; String fileName = "SNOWY2.0系统B端用户信息清单.xlsx";
List<SysUser> sysUserList = this.list(queryWrapper); List<SysUser> sysUserList = this.list(queryWrapper);
if(ObjectUtil.isEmpty(sysUserList)) {
throw new CommonException("无数据可导出");
}
transService.transBatch(sysUserList); transService.transBatch(sysUserList);
sysUserList = CollectionUtil.sort(sysUserList, Comparator.comparing(SysUser::getOrgId)); sysUserList = CollectionUtil.sort(sysUserList, Comparator.comparing(SysUser::getOrgId));
List<SysUserExportResult> sysUserExportResultList = sysUserList.stream() List<SysUserExportResult> sysUserExportResultList = sysUserList.stream()
.map(sysUser -> { .map(sysUser -> {
SysUserExportResult sysUserExportResult = new SysUserExportResult(); SysUserExportResult sysUserExportResult = new SysUserExportResult();
BeanUtil.copyProperties(sysUser, sysUserExportResult); BeanUtil.copyProperties(sysUser, sysUserExportResult);
sysUserExportResult.setGroupName(sysUserExportResult.getOrgName()); sysUserExportResult.setGroupName(ObjectUtil.isNotEmpty(sysUserExportResult.getOrgName())?
sysUserExportResult.getOrgName():"无组织");
// 状态枚举转为文字 // 状态枚举转为文字
sysUserExportResult.setUserStatus(sysUserExportResult.getUserStatus() sysUserExportResult.setUserStatus(sysUserExportResult.getUserStatus()
.equalsIgnoreCase(SysUserStatusEnum.ENABLE.getValue())?"正常":"停用"); .equalsIgnoreCase(SysUserStatusEnum.ENABLE.getValue())?"正常":"停用");
@ -1124,13 +1128,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
File.separator + "userExportTemplate.docx")); File.separator + "userExportTemplate.docx"));
// 构造填充的参数 // 构造填充的参数
Map<String, Object> map = BeanUtil.beanToMap(sysUser); Map<String, Object> map = BeanUtil.beanToMap(sysUser);
map.put("avatar", new ImageEntity(ImgUtil.toBytes(ImgUtil.toImage(StrUtil.split(sysUser.getAvatar(), String avatarBase64;
StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG), 120, 160)); if(ObjectUtil.isNotEmpty(sysUser.getAvatar())) {
avatarBase64 = sysUser.getAvatar();
} else {
avatarBase64 = CommonAvatarUtil.generateImg(sysUser.getAvatar());
}
ImageEntity imageEntity = new ImageEntity(ImgUtil.toBytes(ImgUtil.toImage(StrUtil
.split(avatarBase64, StrUtil.COMMA).get(1)), ImgUtil.IMAGE_TYPE_PNG), 120, 160);
map.put("avatar", imageEntity);
map.put("exportDateTime", DateUtil.format(DateTime.now(), DatePattern.CHINESE_DATE_PATTERN)); map.put("exportDateTime", DateUtil.format(DateTime.now(), DatePattern.CHINESE_DATE_PATTERN));
// 生成doc // 生成doc
XWPFDocument doc = WordExportUtil.exportWord07(destTemplateFile.getAbsolutePath(), map); XWPFDocument doc = WordExportUtil.exportWord07(destTemplateFile.getAbsolutePath(), map);
// 生成临时导出文件 // 生成临时导出文件
resultFile = FileUtil.file(FileUtil.getTmpDir() + File.separator + sysUser.getName() + "个人信息.docx"); resultFile = FileUtil.file(FileUtil.getTmpDir() + File.separator + "SNOWY2.0系统B端用户信息_" + sysUser.getName() + ".docx");
// 写入 // 写入
BufferedOutputStream outputStream = FileUtil.getOutputStream(resultFile); BufferedOutputStream outputStream = FileUtil.getOutputStream(resultFile);
doc.write(outputStream); doc.write(outputStream);

BIN
snowy-plugin/snowy-plugin-sys/src/main/resources/userExportTemplate.docx

Binary file not shown.

18
snowy-web-app/src/test/java/vip/xiaonuo/Test.java

@ -12,11 +12,6 @@
*/ */
package vip.xiaonuo; package vip.xiaonuo;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import vip.xiaonuo.common.exception.CommonException;
import vip.xiaonuo.sys.modular.user.param.SysUserImportParam;
/** /**
* TestMain方法 * TestMain方法
* *
@ -24,16 +19,7 @@ import vip.xiaonuo.sys.modular.user.param.SysUserImportParam;
* @date 2022/9/17 17:10 * @date 2022/9/17 17:10
*/ */
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) throws Exception {
try {
EasyExcel.read("D://import.xlsx", SysUserImportParam.class, new PageReadListener<SysUserImportParam>(dataList -> {
for (SysUserImportParam sysUserImportParam : dataList) {
System.out.println(sysUserImportParam);
}
})).sheet().headRowNumber(2).doRead();
} catch (Exception e) {
e.printStackTrace();
throw new CommonException("文件导入失败");
}
} }
} }

Loading…
Cancel
Save