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

宁夏银川网站建设深圳外贸建站模板

宁夏银川网站建设,深圳外贸建站模板,在哪注册域名,化妆培训网站 源码java 实现导出word 主要有一下几个知识点 1,aspose导入 jar包 和 java编写基础代码下载使用 aspose-words jar包导入 aspose jar 包 使用 maven导入java代码编写 2,if判断 是否显示2,显示指定值3,循环显示List 集合列表 使用 fore…

java 实现导出word 主要有一下几个知识点

  • 1,aspose导入 jar包 和 java编写基础代码
    • 下载使用 aspose-words jar包
    • 导入 aspose jar 包 使用 maven导入
    • java代码编写
  • 2,if判断 是否显示
  • 2,显示指定值
  • 3,循环显示List 集合列表 使用 foreach
  • 4,显示图片 ,

1,aspose导入 jar包 和 java编写基础代码

下载使用 aspose-words jar包

我使用的是 aspose-words-23.3 版本的
之前版本的导出大量word内容容易报错 使用新版解决此问题

导入 aspose jar 包 使用 maven导入

mvn install:install-file -DgroupId=aspose-words -DartifactId=aspose-words -Dversion=23.3 -Dpackaging=jar -Dfile=G:\你的windows电脑的jar包路径\aspose-word\aspose-words-23.3-jdk16.jar

java代码编写

首选新建一个工具类方法

public class QualityConstants {/*** 质量检测 的督导事项id*/public static final int EVENTID = 12;/*** 数字0*/public static final int NUM_ZERO = 0;/*** 数字1*/public static final int NUM_ONE = 1;/*** 数字2*/public static final int NUM_TWO = 2;/*** 数字-1*/public static final int NUM_MINUS_1 = -1;/*** 字节大小512*/public static final int BYTE_512 = 512;/*** 500错误编码*/public static final int CODE_500 = 500;/*** 500错误提示信息 - 状态非法*/public static final String CODE_500_MSG_1 = "状态非法!";/*** 500错误提示信息 - 非督导用户不允许查看质量检测记录*/public static final String CODE_500_MSG_2 = "非督导用户不允许查看质量检测记录!";/*** 500错误提示信息 - 这条质量监测已经完成!无法修改*/public static final String CODE_500_MSG_3 = "这条质量监测已经完成!无法修改!";/*** 500错误提示信息 - 提交失败,材料上传不能为空*/public static final String CODE_500_MSG_4 = "提交失败,材料上传不能为空";/*** 500错误提示信息 - 提交失败,请稍后重试或联系管理员*/public static final String CODE_500_MSG_5 = "提交失败,请稍后重试或联系管理员!";/*** 500错误提示信息 - 提交失败,意见反馈不能为空*/public static final String CODE_500_MSG_6 = "提交失败,意见反馈不能为空!";/*** 405错误编码*/public static final int CODE_405 = 405;/*** 405错误提示信息 - 该信息只允许督导查看*/public static final String CODE_405_MSG_1 = "该信息只允许督导查看!";/*** 200成功编码*/public static final int CODE_200 = 200;/*** 200成功提示信息 - 该信息只允许督导查看*/public static final String CODE_200_MSG_1 = "提交成功!";/*** 错误提示信息 - 尚未选择记录*/public static final String DELETE_FAIRURE_MSG = "删除失败,尚未选择记录!";/*** 错误提示信息 - 尚未选择记录*/public static final String NO_RECORD_SELECTED = "尚未选择记录!";/*** 字符编码utf-8*/public static final String UTF_8 = "utf-8";/*** 默认pid*/public static final int PID = 0;/*** 默认层级*/public static final int DEFUALT_LAYER = 1;/*** 不适当最低得分*/public static final Integer MIN_SCORE = 1;/*** 优秀最高得分*/public static final Integer MAX_SCORE = 7;/*** map的hash初始值*/public static final int HASH_MAP_INIT_VALUE = 32;/*** 全园平均分*/public final static String WHOLE_AVERAGE = "全园平均分";/*** 查询失败*/public final static String QUERY_FAIRURE = "查询失败";/*** 操作成功*/public final static String SUCCESS_MSG = "操作成功!";/*** 操作失败*/public final static String FARIURE_MSG = "操作失败!";/*** 导出失败*/public final static String FARIURE_EXPORT = "导出失败!";/*** 请求头 - 文档*/public final static String CONTENT_TYPE_WORD = "application/msword";/*** 请求头 - 下载*/public final static String CONTENT_TYPE_DOWNLOAD = "application/x-download";/*** 请求头 - 二进制文件*/public final static String CONTENT_TYPE_STEAM = "application/octet-stream;charset=UTF-8";/*** 请求头*/public final static String USER_AGENT = "User-Agent";/*** 请求头*/public final static String CONTENT_TYPE = "Content-Type";/*** 连接*/public final static String CONNECTION = "Connection";/*** 关闭连接*/public final static String CLOSE = "close";/*** 连接*/public final static String ACCESS_CONTROL_ALLOW_ORIGIN = "Access-Control-Allow-Origin";/*** 连接*/public final static String CONTENT_DISPOSITION = "Content-Disposition";/*** 浏览器 - ie*/public final static String MSIE = "MSIE";/*** 浏览器 - Firefox*/public final static String FIREFOX = "Firefox";/*** 填写报告的step*/public final static String MODULE_STEP3_REPORT = "qualityreport";/*** 督导下园核实的材料*/public final static String MODULE_STEP1_MATERIAL = "qualitymetrail";/*** 数字3*/public final static int NUM_3 = 3;/*** 数字4*/public final static int NUM_4 = 4;/*** 数字5*/public final static int NUM_5 = 5;/*** 数字6*/public final static int NUM_6 = 6;/*** 数字7*/public final static int NUM_7 = 7;/*** 数字8*/public final static int NUM_8 = 8;/*** 数字9*/public final static int NUM_9 = 9;/*** 数字10*/public final static int NUM_10 = 10;/*** 数字11*/public final static int NUM_11 = 11;/*** 数字12*/public final static int NUM_12 = 12;/*** 数字13*/public final static int NUM_13 = 13;/*** 数字14*/public final static int NUM_14 = 14;/*** 数字15*/public final static int NUM_15 = 15;/*** 数字16*/public final static int NUM_16 = 16;/*** 数字17*/public final static int NUM_17 = 17;/*** 数字18*/public final static int NUM_18 = 18;/*** 数字19*/public final static int NUM_19 = 19;/*** 数字20*/public final static int NUM_20 = 20;/*** 格式化数字*/public final static String DECIMAL_Format = "######.00";}

以下为实现post导出 并且删除新生成的文件代码 需要借助工具类
传入map json的方式获取参数

@PostMapping("/Export")@ResponseBodypublic void ExportWord(@RequestBody Map<String, Object> json, HttpServletRequest request, HttpServletResponse response) throws Exception {String filePath = "/xxx/xxx/xx/要生成的临时word地址和名称.docx";String tempName = "/xxx/xxx/xx/你的word模版地址和名称.docx";com.aspose.words.Document doc = new com.aspose.words.Document(tempName);Map<String, Object> map = new HashMap<>();XXX  XX= new XXX();  //XXX   为你的 word要的数据的实体类 自己建 这个XXX 包含word所有需要的字段 图片 和循环体XX.setTitle(json.get("title").toString());  //标题
//        图片 base64  传入BufferedImage image = decodeBase64Image(json.get("image").toString()); //json格式传入的base64图片/**** 这里获取图片可以用路径的方式 不使用base64传进来*///BufferedImage image =  ImageIO.read(new FileInputStream("/home/123.png"));//BufferedImage bufferedImage = Utils.resizeBufferedImage(image, 100, 100, false);scivalword.setImg(image );setParams(doc, scivalword);doc.save(filePath);File file = new File(filePath);//world输出流操作InputStream fin = null;OutputStream out = null;try {fin = new FileInputStream(file);response.setCharacterEncoding(QualityConstants.UTF_8);response.setContentType(QualityConstants.CONTENT_TYPE_WORD);String filename = "demo";String agent = request.getHeader(QualityConstants.USER_AGENT);String filenameEncoder = "";// 根据不同的浏览器进行不同的判断if (agent.contains(QualityConstants.MSIE)) {// IE浏览器filenameEncoder = URLEncoder.encode(filename, QualityConstants.UTF_8);filenameEncoder = filenameEncoder.replace("+", " ");} else if (agent.contains(QualityConstants.FIREFOX)) {// 火狐浏览器BASE64Encoder base64Encoder = new BASE64Encoder();filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes(StandardCharsets.UTF_8)) + "?=";} else {// 其它浏览器filenameEncoder = URLEncoder.encode(filename, QualityConstants.UTF_8);}response.setHeader(QualityConstants.ACCESS_CONTROL_ALLOW_ORIGIN, "*");//所有域都可以跨response.setHeader(QualityConstants.CONTENT_TYPE, QualityConstants.CONTENT_TYPE_STEAM);//二进制  流文件response.setHeader(QualityConstants.CONTENT_DISPOSITION, "attachment;filename=" + filenameEncoder + ".doc");//下载及其文件名response.setHeader(QualityConstants.CONNECTION, QualityConstants.CLOSE);//关闭请求头连接//设置文件在浏览器打开还是下载response.setContentType(QualityConstants.CONTENT_TYPE_DOWNLOAD);out = response.getOutputStream();byte[] buffer = new byte[QualityConstants.BYTE_512];int bytesToRead = QualityConstants.NUM_MINUS_1;// 通过循环将读入的Word文件的内容输出到浏览器中while ((bytesToRead = fin.read(buffer)) != QualityConstants.NUM_MINUS_1) {out.write(buffer, QualityConstants.NUM_ZERO, bytesToRead);}} catch (Exception e) {System.out.println("导出异常");} finally {try {//这里最后删除文件if (fin != null) {fin.close();}if (out != null) {out.flush();out.close();}if (file != null) {file.delete();}} catch (IOException e) {System.out.println("导出异常");}}}private static void setParams(Document doc, XXX vo) throws Exception { //XXX   为你的 word要的数据的实体类 自己建 这个XXX 包含word所有需要的字段 图片 和循环体ReportingEngine engines = new ReportingEngine();engines.getKnownTypes().add(xxxxx.class);//加入实体类类型 - 在foreach中用到 engines.buildReport(doc, new Object[]{vo}, new String[]{"st"});}//获取当前日期的年月日public static String getCurrentDate() {Date currentDate = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年 MM月dd日");return dateFormat.format(currentDate);}
//把字符串类型的base64图片转换成IO流给buffere public static BufferedImage decodeBase64Image(String base64Image) {try {byte[] imageData = Base64.getDecoder().decode(base64Image);ByteArrayInputStream inputStream = new ByteArrayInputStream(imageData);return ImageIO.read(inputStream);} catch (Exception e) {e.printStackTrace();return null;}}

上面的代码中包含 图片 和实体类 for循环就是要在你的实体类里面插入一个 list 然后往这个list里面插入值以后
在这里插入图片描述
这里需要加入你要插入循环的实体类 给word里面获取实体类使用

在这里插入图片描述
比如我的实体类里面就有这些list 那么这些list里面的 bo就需要插入到上面的图片里面

上的代码中
XXX 为你的实体类自己创建 可以创建一个 默认的 比如

public class XXX{//注意 get set 方法一定要有private String title;private BufferedImage img;private List<entityBo> entitbo;
}

2,if判断 是否显示

这里用到word里面的if判断了
如图
在这里插入图片描述

<<if [st.getTitle() != null ]>> <<[st.getTitle()]>> <>
这里就判断了如果 传入的title不为空的情况下再进行显示

2,显示指定值

在这里插入图片描述
直接使用 就可以显示值

3,循环显示List 集合列表 使用 foreach

在这里插入图片描述

这里用到了 entitylist 进行了for循环 xxxx为
在这里插入图片描述
这里显示的实体类 必须在这里加入 否则会报错和无法使用
注意 开始 foreach就要有结束的 foreach 相对应的都是 类似于 xml格式的 word导出

注意 “String[]{“st”}” st表示在word里面的初始名称 调用关键字 比如你的实体类里面有title的字段 就用 st.getTitle() 就可以调用 如果是list就是 st.getList() 就可以调用

4,显示图片 ,

显示图片就是你的baset64复值给实体类传入以后 打开你的 word
在这里插入图片描述
点击文本框
插入到里面 在里面写入bo的img名称即可
如图
在这里插入图片描述
如果不想要外边框可以使用
在这里插入图片描述
属性里面的内容设置成无即可

附赠一个 word
在这里插入图片描述


http://www.yayakq.cn/news/734108/

相关文章:

  • 门户网站建设进一步提升邯郸网站设计应搜韦欣cidun8上词
  • led 网站模板江苏智能网站建设流程
  • 四川德立胜建设工程有限公司网站网站制作全包多少钱
  • 电子政务 和网站建设总结松山湖网站建设
  • 网页导航网站设计免费制作图片带字 手机软件
  • 沈阳市有做网站的公司谁给我一个企业邮箱认证
  • 让你做一个旅游网站你会怎么做wordpress 前台上传
  • 网站关键字选择标准网站pv uv 多少算好站
  • 营销网站定制的优势wordpress两个域名访问不了
  • 做平台网站怎么赚钱网站系统
  • 快速提高网站关键词排名优化网站制作费用贵不贵
  • 权重的网站个人wordpress怎么赚钱
  • 网址跳转网站wordpress 游客留言
  • 莆田制作网站企业网站网站做代理怎么发展下线
  • 南京网站建设推广权威发布是指什么
  • 成都专业建网站公司暑假计算机培训班有哪些
  • 网站程序哪个好什么兼职网站可以做视频剪辑
  • 苏州新港建设集团有限公司网站赣州硕康网络科技有限公司
  • 网站建设费应入什么科目wordpress主题后台汉化
  • 怎么做网站登录站做推广的技巧
  • 做得好的网站建设公司厦门同安区建设局网站
  • dede网站301怎么做doku做网站
  • 怎么做网站或APP千锋教育招聘
  • 医生做网站不违法个体户核名查询系统
  • 广告制作网站源码做网站的励志故事
  • 企业网站建设方案书搜狗引擎网站收录
  • 做家务的男人网站wordpress支持哪一版本php
  • 城乡建设局网站首页百度网站建设
  • wordpress做管理网站百度一级代理商
  • 西部数码网站建设助手炫酷业务网站