主要问题和要求:
1.以此为模板,实现java填写并导出。
2._____年 需要填写。
3.表头的月日需要填写。
4.检查内容不确定哪里是拆分单元格。动态变化的。
5.表格不一定是多少页。

原始表格


最终表格

   public static void main(String[] args) throws IOException, InvalidFormatException {/*** 加载文档/填写_____年*/Document doc = new Document();doc.loadFromFile("D:/1.doc");for (int i = 0; i < doc.getSections().getCount(); i++) {int j = doc.getSections().get(i).getParagraphs().getCount();for (int k = 0; k < j; k++) {Paragraph paragraph = doc.getSections().get(i).getParagraphs().get(k);paragraph.getText().indexOf("年");doc.setReplaceFirst(true);paragraph.replace("     ", "     2020", false, true);}}/*** 删除表头的 月 日*/Table table = null;for (int k = 0; k < doc.getSections().getCount(); k++) {for (int t=0;t<doc.getSections().get(k).getTables().getCount();t++){try {table = doc.getSections().get(k).getTables().get(t);//遍历表格每行for (int j = 0; j < table.getRows().getCount(); j++) {if (j == 0) {for (int d = 3; d < table.getRows().get(0).getCells().getCount(); d++) {TableCell cell = table.getRows().get(0).getCells().get(d);cell.getChildObjects().clear();}}}} catch (Exception e) {System.out.println("这一页没表格");}}}/*** 插入数据*/for (int k = 0; k < doc.getSections().getCount(); k++) {for (int t=0;t<doc.getSections().get(k).getTables().getCount();t++){try {table = doc.getSections().get(k).getTables().get(t);//遍历表格每行for (int j = 0; j < table.getRows().getCount(); j++) {if (j == 0) {for (int d = 3; d < table.getRows().get(0).getCells().getCount(); d++) {TableCell cell = table.getRows().get(0).getCells().get(d);cell.addParagraph().appendText("2020-9-9");}}else if (IsNumber.isNumeric(table.getRows().get(j).getCells().get(0).getFirstParagraph().getText().trim())){//判断第一列是不是序号,数字(区分开执行人和备注)if (table.getRows().get(j).getCells().getCount()==table.getRows().get(0).getCells().getCount()){//判断一行几列,第三列是否是第二项的子项,这是否的情况下,聪第四列开始填for (int q=3;q<table.getRows().get(j).getCells().getCount();q++){table.getRows().get(j).getCells().get(q).getFirstParagraph().appendText("1212");}}else{//第三列是第二列的子项,所以列数多一位,应该从第五列开始for (int q=4;q<table.getRows().get(j).getCells().getCount();q++){table.getRows().get(j).getCells().get(q).getFirstParagraph().appendText("1213");}}}else if (table.getRows().get(j).getRowIndex()==table.getRows().getCount()-2){//如果行标等于总行数-1,说明是倒数第二行for (int q = 1;q<table.getRows().get(j).getCells().getCount();q++){table.getRows().get(j).getCells().get(q).getFirstParagraph().appendText("张三");}}else if (table.getRows().get(j).getRowIndex()==table.getRows().getCount()-1){//如果行标等于总行数-1,说明是倒数第二行for (int q = 0;q<7;q++){table.getRows().get(j).getCells().get(1).addParagraph().appendText("555");}}}} catch (Exception e) {System.out.println("这一页没表格");}}}//保存文档doc.saveToFile("D:/addrow.doc", FileFormat.Docx_2013);doc.dispose();}

java导出word复杂表格相关推荐

  1. java 导出word 含表格_poi 导出word,导出表格(复杂表格合并行列)解决方法

    如下图:一个table表格,需要作为表格插入到word中: 1.首先对表格做拆分处理 代码如下:private String simplifyTable(String tableContent) { ...

  2. java poi导出word 多表格 页眉 非xml

    poi可以操作excel表格和word文档,但是网上找的poi表格相关大多是操作excel表格,很少有word的复杂表格. 加上最近项目上也遇到了要使用java导出word多表格的问题. 开始网上找的 ...

  3. Java导出word表格|poi-tl

    目标 多级表头.分页.动态数据 实现 依赖: <!-- poi工具类--><dependency><groupId>com.deepoove</groupId ...

  4. java导出word的几种方式

    目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过J ...

  5. java导出word纸张方向_java导出word的几种方式

    目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过J ...

  6. java_导出_word_[转载]java导出word的5种方式

    在网上找了好多天将数据库中信息导出到word中的解决方案,现在将这几天的总结分享一下.总的来说,java导出word大致有5种解决方案: 1:Jacob是Java-COM Bridge的缩写,它在Ja ...

  7. 目前java导出word的6种解决方案

    文章转载自:http://www.cnblogs.com/lcngu/p/5247179.html 最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. ...

  8. java 导出 word_怎么用java导出word

    展开全部 java导出word代码如下: package com.bank.util; import java.awt.Color; import java.io.FileOutputStream; ...

  9. Java读取word中表格

    因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...

最新文章

  1. 毕业后五年之内将决定你的一生
  2. 电脑记事本_办公便签记事本
  3. HBase概念学习(八)开发一个类twitter系统之表设计
  4. Java中的DeskTop类
  5. 科幻作文计算机,种子科幻作文
  6. 冬日稻城亚丁,美得一塌糊涂!
  7. leetcode 208. Implement Trie (Prefix Tree) | 208. 实现 Trie 前缀树(Java)
  8. 课堂练习 5-22 团队如何做决定
  9. ubuntu 查找qt是否安装_Ubuntu Qt 安装教程--快速下载连接(网盘)
  10. K8S_Google工作笔记0002---K8S介绍和特性
  11. 原生js循环展示dom_为什么说JS的DOM操作很耗性能
  12. ajax 微信code获取_ajax实现微信网页授权登录
  13. mysql front 链接_使用mysql_Front链接mysql,出现警告access denied for user ''@'localhost'
  14. 7个步骤建立可用的机器学习模型
  15. MySQl查询前三名(包括并列)
  16. 卡尔曼滤波原在温度测量中的应用
  17. [服务计算] 简单 web 服务与客户端开发实战
  18. Unity5.0 RPG角色扮演历险类游戏之 森林历险记
  19. 数学-统计-距-四分位数、箱线图、方差、标准差、标准分(Z分布)
  20. 如何灵活使用ASCII编码

热门文章

  1. wpf中webbrowser弹出windows 安全警告窗口的处理
  2. 学习一下DOM中的cloneNode()与cloneNode(true)的基础知识
  3. wordcloud库,与,橡皮泥
  4. 华为一研发谈好新东家、离职后,对方不录用了:索赔80万、判赔11.7万
  5. xxx系统的可用性和易用性分析
  6. Systemverilog 打印格式
  7. 数学式a=b或ac的C语言表达式是,数学式a (b*c)的 Java语言表达式是
  8. 排序算法(二):快速排序
  9. 通过脑电图/脑磁图观察到的大脑活动来指导经颅脑刺激
  10. 【知识图谱论文】HackRL:用于跨图知识融合和协作推理的分层注意强化学习