pom.xml依赖

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.0</version>
        </dependency>
        <!--xlsx(07)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.0</version>
        </dependency>

java代码

@Test
    public void wordTest(){

        String filePath="C:\\Users\\Administrator\\Desktop\\风险辨识导入表单\\风险辨识导入表单\\3.作业活动JHA分析表-渤海石化2022.07.04.1.docx";
        int orderNum=1;
        String a="触电\n" +
                "高处坠落\n" +
                "物体打击\n" +
                "其他伤害";
        try{
            FileInputStream in = new FileInputStream(filePath);//载入文档
            // 处理docx格式 即office2007以后版本
            if(filePath.toLowerCase().endsWith("docx")){
                //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后
                XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息
                Iterator<XWPFTable> itpre = xwpf.getTablesIterator();//得到word中的表格
                int total = 0;
                while (itpre.hasNext()) {
                    itpre.next();
                    total += 1;
                }
                Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格
                // 设置需要读取的表格  set是设置需要读取的第几个表格,total是文件中表格的总数
                int set = orderNum;
                int num = set;
                // 过滤前面不需要的表格
                for (int i = 0; i < set-1; i++) {
                    it.hasNext();
                    it.next();
                }
                List<String> tableList = new ArrayList<>();
                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);
                        //读取每一列数据
                        List<XWPFTableCell> cells = row.getTableCells();
                        List<String> rowList = new ArrayList<>();
                        for (int j = 0; j < cells.size(); j++) {

                            XWPFTableCell cell = cells.get(j);
                            rowList.add(cell.getText());
                            //输出当前的单元格的数据
//                            System.out.print(cell.getText()+ "\t");
//                            System.out.print(cell.getText()+"["+i+","+j+"]" + "\t");
                            
                            //读取单元格内的换行符
                            if(j==5||j==6) {
                                for (int k = 0; k < cell.getParagraphs().size(); k++) {
                                    String text = "";
                                    // 遍历第一段里面所有的run 注意这里只get了0的段落
                                    for (int p = 0; p < cell.getParagraphs().get(k).getRuns().size(); p++) {
                                        text = text + cell.getParagraphs().get(k).getRuns().get(p);
                                    }
                                    System.out.println("单元格第" + k + " " + "排的内容是:" + text);
                                }
                            }

                        }
                        tableList.addAll(rowList);
                        System.out.println();
                    }
                    // 过滤多余的表格
                    while (num < total) {
                        it.hasNext();
                        it.next();
                        num += 1;
                    }
                }
                System.out.println(tableList);
//                return tableList;
            }
//            else{
//                // 处理doc格式 即office2003版本
//                POIFSFileSystem pfs = new POIFSFileSystem(in);
//                HWPFDocument hwpf = new HWPFDocument(pfs);
//                Range range = hwpf.getRange();//得到文档的读取范围
//                TableIterator itpre = new TableIterator(range);;//得到word中的表格
//                int total = 0;
//                while (itpre.hasNext()) {
//                    itpre.next();
//                    total += 1;
//                }
//                TableIterator it = new TableIterator(range);
//                // 迭代文档中的表格
//                // 如果有多个表格只读取需要的一个 set是设置需要读取的第几个表格,total是文件中表格的总数
//                int set = orderNum;
//                int num = set;
//                for (int i = 0; i < set-1; i++) {
//                    it.hasNext();
//                    it.next();
//                }
//                List<String> tableList = new ArrayList<>();
//                while (it.hasNext()) {
//                    Table tb = (Table) it.next();
//                    System.out.println("这是第" + num + "个表的数据");
//                    //迭代行,默认从0开始,可以依据需要设置i的值,改变起始行数,也可设置读取到那行,只需修改循环的判断条件即可
//                    for (int i = 0; i < tb.numRows(); i++) {
//                        List<String> rowList = new ArrayList<>();
//                        TableRow tr = tb.getRow(i);
//                        //迭代列,默认从0开始
//                        for (int j = 0; j < tr.numCells(); 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);
//                                }
//                                rowList.add(s);
//                                System.out.print(s+"["+i+","+j+"]" + "\t");
//                            }
//                        }
//                        tableList.addAll(rowList);
//                        System.out.println();
//                    }
//                    // 过滤多余的表格
//                    while (num < total) {
//                        it.hasNext();
//                        it.next();
//                        num += 1;
//                    }
//                }
//                return tableList;
//            }
        }catch(Exception e){
            e.printStackTrace();
        }
//        return null;
    }