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

店铺网站平台建设方案焦作建设网站

店铺网站平台建设方案,焦作建设网站,wordpress禁用文章定时发布,阿里云做的网站空间最近接到一个新的需求#xff0c;用户创建好模板文件保存到模板库#xff0c;然后使用在线文档编辑器打开模板时#xff0c;将系统数据填充到模板文件并生成新的word文件#xff0c;然后在线编辑#xff0c;研究使用Apache POI和POI-OOXML实现了这个功能。 Maven依赖 用户创建好模板文件保存到模板库然后使用在线文档编辑器打开模板时将系统数据填充到模板文件并生成新的word文件然后在线编辑研究使用Apache POI和POI-OOXML实现了这个功能。 Maven依赖 !-- Apache POI 和 POI-OOXML --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion5.2.2/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion5.2.2/version/dependency 自动填充的接口 import org.apache.poi.xwpf.usermodel.*; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map;RestController RequestMapping(/fill) public class WordFillController {PostMapping(/wordFill)public ResponseEntity? wordFill() {String templatePath E:\\word\\template.docx;String outputPath E:\\word\\output.docx;// 待填充进模板的数据MapString, String data new HashMap();data.put(name, 张三);data.put(sex, 男);data.put(age, 18);MapString, String data1 new HashMap();data1.put(name, 张三1);data1.put(sex, 男1);data1.put(age, 20);MapString, String data2 new HashMap();data2.put(name, 李四);data2.put(sex, 男);data2.put(age, 21);MapString, String data3 new HashMap();data3.put(name, 王五);data3.put(sex, 女);data3.put(age, 45);ListMapString, String dataList Arrays.asList(data1, data2, data3);try (// 从模板文件创建word文档对象XWPFDocument doc new XWPFDocument(Files.newInputStream(Paths.get(templatePath)));// 文件输出流FileOutputStream fos new FileOutputStream(outputPath)) {replacePlaceholders(doc, data);// 替换占位符fillTable(doc, dataList);// 填充表格// 将文档写入输出流doc.write(fos);// 刷新输出流fos.flush();return ResponseEntity.ok().build();} catch (IOException e) {e.printStackTrace();return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());}}private void replacePlaceholders(XWPFDocument doc, MapString, String data) {// 遍历文档中的段落替换占位符doc.getParagraphs().forEach(paragraph - {// 遍历段落中的文本替换占位符paragraph.getRuns().forEach(run - {// 获取文本内容String text run.getText(0);// 判断文本是否包含占位符如果包含则替换占位符if (text ! null text.contains(${)) {for (Map.EntryString, String entry : data.entrySet()) {text text.replace(${ entry.getKey() }, entry.getValue());}// 设置替换后的文本run.setText(text, 0);}});});}private void fillTable(XWPFDocument doc, ListMapString, String dataList) {XWPFTable table doc.getTables().get(0); // 获取第一个表格// 获取表格的模板行假设表格的第一行是标题行第二行为模板行XWPFTableRow templateRow table.getRow(1);// 添加新的行并删除模板行for (MapString, String data : dataList) {XWPFTableRow newRow table.createRow();// 手动创建每个单元格并复制模板行的样式for (int i 0; i templateRow.getTableCells().size(); i) {XWPFTableCell templateCell templateRow.getCell(i);XWPFTableCell newCell newRow.getCell(i);if (newCell null) {newCell newRow.createCell();}// 复制模板行单元格的样式不复制内容copyCellStyleWithoutText(templateCell, newCell);// 填充数据switch (i) {case 0:newCell.setText(data.get(name));break;case 1:newCell.setText(data.get(sex));break;case 2:newCell.setText(data.get(age));break;}}}// 删除模板行table.removeRow(1);}private void copyCellStyleWithoutText(XWPFTableCell sourceCell, XWPFTableCell targetCell) {// 复制单元格的样式但不复制文本内容targetCell.getParagraphs().forEach(paragraph - {XWPFParagraph sourceParagraph sourceCell.getParagraphs().get(0);paragraph.setAlignment(sourceParagraph.getAlignment());paragraph.setVerticalAlignment(sourceParagraph.getVerticalAlignment());if (!sourceParagraph.getRuns().isEmpty()) {XWPFRun sourceRun sourceParagraph.getRuns().get(0);XWPFRun targetRun paragraph.createRun();targetRun.setBold(sourceRun.isBold());targetRun.setItalic(sourceRun.isItalic());targetRun.setFontFamily(sourceRun.getFontFamily());targetRun.setFontSize(sourceRun.getFontSize());}});// 复制单元格背景色等样式targetCell.setColor(sourceCell.getColor());targetCell.setVerticalAlignment(sourceCell.getVerticalAlignment());} } word模板 调用接口后生成的新文件
http://www.hkea.cn/news/14451847/

相关文章:

  • 网站建设多少费用泰州seo推广
  • 网站建设与实现的要求与务设计制作小车二教学反思
  • 专门做美食的视频网站有哪些阿里云域名注册查询
  • 二手网站建设论文wordpress cui2.0
  • 网站建好后如何上线网络科技公司组织架构
  • 网站建设视频格式长春市建设集团股份有限公司
  • 免费做简单网站株洲市住房和城乡建设局网站
  • 温州建校网站wordpress twitter登陆
  • 网站首页分辨率做多大的榆次住房保障和城乡建设局网站
  • 网站广告条幅怎么做动态的外贸网站制作怎么选
  • 做购物网站是怎么连接银行南充房产交易网官网
  • 网站建设如何插音乐商务网站的推广
  • 网站外链内链怎么做中国三大搜索引擎
  • 重庆哪家做网站做旅游网站有前途吗
  • 北京网站建设 地址海淀phpcms校园网站
  • 无锡网站优化推广短视频询盘获客系统
  • 网站建设 案例展示哈尔滨快速建站公司推荐
  • 工程师培训网站关键词优化外包服务
  • 邢台企业网站制作建设互联网上网络营销的推广
  • 网站建设 dwwordpress与淘宝
  • 哪个网站做相册好宿州市网站建设有哪些公司
  • 贵阳论坛网站建设免费营销管理系统crm
  • 网站建设从初级到精通wordpress个人站主题
  • 公司网站空间华润集团网站建设商
  • 全国网站建设哪家专业有网址 有空间怎么做网站
  • 暗红色网站郑州中医男科哪个医院好
  • 在手机上怎么做微电影网站电商优惠券网站 建设
  • 男女生做羞羞事情的网站南宁网站制作企业
  • host绑定网站wordpress通过数据库重置账号面膜
  • 好的宝安网站建设如何搭建公司官网