java导出word 在模板基础上拼接

/**
	 * @Title exportQuestionLogs
	 * @Description 导出- 根据要求讲所有被谈话人问题整合 所有被考核干部 - 在模板基础上拼接
	 * @author guoxingzhan
	 * @date 2022/12/23 14:27
	 * @param leadeAssessId
	 * @param request
	 * @param response
	 * @return
	 */
	@RequestMapping(value = "/exportQuestionLogs")
	public void exportQuestionLogs(@RequestParam String leadeAssessId, HttpServletRequest request, HttpServletResponse response) {
		OutputStream out = null;
		try {
			response.setContentType("application/octet-stream");
			response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode("访谈记录.docx", "utf-8"));
			out = response.getOutputStream();
			// 根据id获取谈话信息
			CadreConversationAssess model = cadreConversationAssessService.getById(leadeAssessId);
			String wordPath = (uploadpath + File.separator + "gbthjlall.docx");
			ParseWord07 pw07 = new ParseWord07();
			Map<String, Object> dataMap = new HashMap<>();
			dataMap.put("date", DateUtil.DateToString(model.getCreateTime(), "yyyy/MM/dd"));
			XWPFDocument doc2 = pw07.parseWord(wordPath, dataMap);
//			XWPFDocument doc = new XWPFDocument();// 创建Word文件-不使用模板
			XWPFParagraph p = doc2.createParagraph();// 新建一个段落
//				p.setAlignment(ParagraphAlignment.CENTER);// 设置段落的对齐方式
//				p.setBorderBottom(Borders.DOUBLE);//设置下边框
//				p.setBorderTop(Borders.DOUBLE);//设置上边框
//				p.setBorderRight(Borders.DOUBLE);//设置右边框
//				p.setBorderLeft(Borders.DOUBLE);//设置左边框
			XWPFRun r = null;//创建段落文本
			// 分割被考核人id
			String[] userIds = model.getUserId().split(",");
			// 谈话内容
			for (int uIndex = 0; uIndex < userIds.length; uIndex++ ) {
				String userId = userIds[uIndex];
				// 根据谈话id获取谈话问题
				QueryWrapper<CadreConversationAssessQuestion> queryWrapper = new QueryWrapper<>();
				queryWrapper.eq("leade_assess_id", leadeAssessId);
				List<CadreConversationAssessQuestion> list = questionService.list(queryWrapper);
				r = p.createRun();//创建段落文本
				// 被考核人姓名
				r.setText(numberToChinese(uIndex + 1) + "、" + sysBaseAPI.getUserById(userId).getRealname());
//				r.setBold(true);//设置为粗体
//				r.setColor("FF0000");//设置颜色
				r.setFontSize(16); // 三号
				r.setFontFamily("黑体");
				// 遍历谈话问题
				for (int i = 0; i < list.size(); i++) {
					// 根据谈话人id和谈话问题id获取谈话问题回复
					QueryWrapper<CadreConversationAssessAnswer> answerWrapper = new QueryWrapper<>();
					answerWrapper.eq("user_id", userId) // 被考核人
							.eq("question_id", list.get(i).getId()); // 谈话问题
					List<CadreConversationAssessAnswer> answers = answerService.list(answerWrapper);
					// 拼接导出内容
					// 问题标题
					p = doc2.createParagraph();// 新建一个段落
					r = p.createRun();
					r.setFontSize(16); // 三号
					r.setFontFamily("楷体_GB2312");
					r.setText("(" + numberToChinese(i + 1) + ")" + list.get(i).getTitle());
					// 问题回复列表
					for(int j = 0; j < answers.size(); j++ ){
						CadreConversationAssessAnswer answer = answers.get(j);
						// 问题活肤
						p = doc2.createParagraph();// 新建一个段落
						r = p.createRun();
						r.setFontSize(16); // 三号
						r.setFontFamily("仿宋_GB2312");
						r.setText((j + 1) + ". " + (answer != null ? answer.getContent(): "无"));
					}
				}
				r.addCarriageReturn();//回车键
			}
			doc2.write(out);
		} catch (Exception e) {
			e.printStackTrace();
			log.error("谈话记录", e.getMessage());
		} finally {
			try {
				if (out != null) {
					out.flush();
					out.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
				log.error("谈话记录", e.getMessage());
			}
		}

	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值