• 依赖
        <!--Java读取word中的表格数据--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency>
  • 代码

import com.alibaba.fastjson.JSON;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;import static org.junit.Assert.*;@RunWith(SpringRunner.class)
@SpringBootTest
public class HandleDataTest {@AutowiredMongoTemplate mongoTemplate;// 读取doc文档中表格数据示例/*** 读取文档中表格* @param*/@Testpublic void testWord(){System.err.println("开始读取");String filePath = "G:\\项目文件\\附件3-代码 - 副本.doc";System.err.println("结束读取");List<Subject> resultList = new ArrayList<>();try{FileInputStream in = new FileInputStream(filePath);//载入文档// 处理docx格式 即office2007以后版本if(filePath.toLowerCase().endsWith("docx")){//word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格// 设置需要读取的表格  set是设置需要读取的第几个表格,total是文件中表格的总数int set = 1, total = 2;int num = set;// 过滤前面不需要的表格/*  for (int i = 0; i < set-1; i++) {it.hasNext();it.next();}*/while(it.hasNext()){XWPFTable table = it.next();System.out.println("这是第" + num + "个表的数据");List<XWPFTableRow> rows = table.getRows();//读取每一行数据for (int i = 0; i < rows.size(); i++) {XWPFTableRow  row = rows.get(i);System.err.println("第"+i+"行:");//读取每一列数据List<XWPFTableCell> cells = row.getTableCells();for (int j = 0; j < cells.size(); j++) {XWPFTableCell cell = cells.get(j);//输出当前的单元格的数据System.out.print("第"+j+"列:"+cell.getText() + "\t");}System.out.println();}// 过滤多余的表格/*   while (num < total) {it.hasNext();it.next();num += 1;}*/}}else{// 处理doc格式 即office2003版本POIFSFileSystem pfs = new POIFSFileSystem(in);HWPFDocument hwpf = new HWPFDocument(pfs);Range range = hwpf.getRange();//得到文档的读取范围TableIterator it = new TableIterator(range);// 迭代文档中的表格// 如果有多个表格只读取需要的一个 set是设置需要读取的第几个表格,total是文件中表格的总数int set = 1, total = 10;int num = total;for (int i = 0; i < set-1; i++) {it.hasNext();it.next();}while (it.hasNext()) {Table tb = (Table) it.next();System.out.println("这是第" + num + "个表的数据");//迭代行,默认从0开始,可以依据需要设置i的值,改变起始行数,也可设置读取到那行,只需修改循环的判断条件即可for (int i = 0; i < tb.numRows(); i++) {Subject subject = new Subject();TableRow tr = tb.getRow(i);//迭代列,默认从0开始
//                        for (int j = 0; j < tr.numCells(); j++) {for (int j = 0; j < tr.numCells()-1; j++) {TableCell td = tr.getCell(j);//取得单元格//取得单元格的内容for(int k = 0; k < td.numParagraphs(); k++){Paragraph para = td.getParagraph(k);String s = para.text();//去除后面的特殊符号if(null != s && !"".equals(s)){s = s.substring(0, s.length()-1);}if(j == 0){subject.setCode(s);}if(j == 1){subject.setName(s);}System.out.print("---" + s + "\t");}}//将数据保存到数据库中mongoTemplate.save(subject);resultList.add(subject);System.out.println();}// 过滤多余的表格while (num < total) {it.hasNext();it.next();num += 1;}}}System.out.println("一共:" + resultList.size() + " 个");}catch(Exception e){e.printStackTrace();}
//        System.out.println(JSON.toJSONString(resultList, true));}}

Java读取office-word(doc、docx)里面表格中的数据相关推荐

  1. 向大量Word文档的表格中填写数据

    本文来自趣学python+python办公专栏该专栏致力于兴趣化.实用化的学习python会定期更新. 专栏链接:传送门 目录标题 导读 实际演示阶段 详细介绍该库 细节介绍 点击直接资料领取 导读 ...

  2. java poi 读word (doc,docx)表格

    项目场景: 最近公司将线下流程线上话,提供上传模板的功能,很多表格都是在word里面生成的,找了很多资料处理docx 跟doc 最后docx 勉强可以用,doc还是不完善,最后只能沟通 限制上传doc ...

  3. Java读取、写入、处理Excel文件中的数据

    在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...

  4. Java获取word表格中的数据

    前言: 有时系统中需要提取各种文件中的数据,比如做报表的系统中就常常与Excel表格数据做交互.做Excel报表数据时有选择POI实现的,但是POI功能也很单一,对于文档格式维护性差,最重要的是POI ...

  5. java读取word表格中的数据_JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  6. Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOC/DOCX 转换为 PDF

    Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word. A ...

  7. java实现读取excel表格中的数据,兼容xls和xlsx

    前言 利用 java 实现读取 excel 表格中的数据,兼容 xls 与 xlsx 格式,不用额外做区分,写不同的实现方法. 引入的依赖包 <dependency><groupId ...

  8. java poi 模板填数据库,java使用POI读取excel模版并向固定表格里填写数据详解

    java使用POI读取excel模版并向固定表格里填写数据详解:public class ExportExcelDemo { private HSSFWorkbook workbook = null; ...

  9. java搜索excel表格里的数据_Java读取Excel表格中的数据

    前言 本文主要讲述如何在Java中读取Excel表中的数据并在控制台输出,实现工具为Eclipse 提示:以下是本篇文章正文内容,下面案例可供参考 一.添加jar包文件 描述:在Java中导入导出Ex ...

最新文章

  1. 决策树-随机森林-两种Feature importances排序方法
  2. mysql深入使用教程_深入mysql基础知识的详解
  3. python数据科学讲解_数据科学的概念-Python数据科学技术详解与商业项目实战精讲 - Python学习网...
  4. 蒸发器分段设计matlab程序_制冷系统蒸发器过热度控制回路的MATLAB仿真_何煜
  5. 已安装nginx动态添加模块
  6. 12GB内存版华为P30、P30 Pro工信部入网:售价或将突破7000元
  7. linux服务器上svn的log_SVN如何查看修改的文件记录
  8. 某中学校校园网络方案设计(课程设计)
  9. 解决vue+php跨域问题
  10. Leetcode题medium48/54/55/56/59/62/63/64,Python多种解法(四)
  11. Readyboost技术U 盘变内存,加速电脑(只针对Windows 7和Vista系统)
  12. 高效的word转换成pdf转换器
  13. android日期与时间滑动选择器
  14. 磨金石教育是正规的吗?插画好学吗?学习插画有哪些小技巧?
  15. 云原生时代一站式DevOps平台--阿里云效
  16. 《巴巴拉少校》读书笔记优秀范文2877字
  17. IOS-Svn-Cornerstone 终端 命令行
  18. 各种压缩算法的压缩效率,时间、压缩比等比较
  19. 刘海洋《LaTex入门》学习笔记4
  20. Nervos:链外扩容 + Layer 2才是区块链的未来(下)

热门文章

  1. IT运维机器人 Databuff One Agent
  2. 眼下智能手机市场的一点感想
  3. 挖掘机哪家强?不找蓝翔找AI!
  4. 10行Python代码制作群聊提醒小助手,再也不怕漏掉消息了
  5. web前端工程师还没参加工作,项目经验咋积累?用这个办法模拟项目经验非常好,找工作好找多了。
  6. vscode使用chrome调试报错
  7. Python技术,我们这一年...
  8. Java 1.8 数组转 Set,转List,转由零自增的Map
  9. Spring官宣,干掉原生JVM!
  10. 刀塔OMG塔防1.26b单机版使用方法