精华内容
下载资源
问答
  • Java读取Word表格内容

    2018-06-09 22:07:28
    通过Java读取word表格中的内容,将内容存到数据库中,将Word中的图片存到硬盘中
  • Java读取Word文档中指定位置(可以自己自定义位置)的表格数据或文本内容 * @param filePath 文档路径 * @param start 指定位置开始读取表格数据的该位置上的字符串 * @param end 指定位置开始结束读取表格数据的该...
  • JAVA操作word Java 操作Microsoft Word 之jacob(1) Java 操作Microsoft Word 之jacob(1) JJaavvaa操操作作MMiiccrroossooffttWWoorrdd之之jjaaccoobb(11) 现在我们一起来看看用J1ava如何操作Microsoft Word jacob...
  • Java读取Word中的表格(Excel),并导出文件为Excel
  • Java读取并导出Word中的表格(Excel),导出文件为Excel
  • java 读取Word表格数据(POI)

    千次阅读 2020-01-06 10:41:43
    * 读取word文档中表格数据,支持doc、docx * @author Fise19 * */ public class WordReaderUtil { /** * 读取文档中表格 * @param filePath 文档路径 * @param orderNum 设置需要读取的第几个表格 */ ...

    1、添加依赖

    <dependency>
         <groupId>org.apache.poi</groupId>
         <artifactId>poi-ooxml</artifactId>
        <version>3.13</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.13</version>
    </dependency>

    2、工具类

    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 java.io.FileInputStream;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     *
     * 读取word文档中表格数据,支持doc、docx
     * @author Fise19
     *
     */
    public class WordReaderUtil {
    
        /**
         * 读取文档中表格
         * @param filePath 文档路径
         * @param orderNum 设置需要读取的第几个表格
         */
        public static List<List<String>> tableInWord(String filePath,Integer orderNum){
            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<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()+"["+i+","+j+"]" + "\t");
                            }
                            tableList.add(rowList);
                            System.out.println();
                        }
                        // 过滤多余的表格
                        while (num < total) {
                            it.hasNext();
                            it.next();
                            num += 1;
                        }
                    }
                    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<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.add(rowList);
                            System.out.println();
                        }
                        // 过滤多余的表格
                        while (num < total) {
                            it.hasNext();
                            it.next();
                            num += 1;
                        }
                    }
                    return tableList;
                }
            }catch(Exception e){
                e.printStackTrace();
            }
            return null;
        }
    }
    

     

    展开全文
  • Java读取word表格

    2018-03-13 17:09:00
    因为要新建一个站,公司要把word表格的部分行列存到数据库中。之前用java操作过excel,本来打算用... 但还是把java读取word中表格的方法写一下,先上代码。 public static void testWord(String filePath){ ...

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

      但还是把java读取word中表格的方法写一下,先上代码。

    public static void testWord(String filePath){  
            try{  
               FileInputStream in = new FileInputStream(filePath);//载入文档 //如果是office2007  docx格式  
               if(filePath.toLowerCase().endsWith("docx")){  
                  //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后     
                   XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息  
    //             List<XWPFParagraph> listParagraphs = xwpf.getParagraphs();//得到段落信息  
                   Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格 
                   
                   while(it.hasNext()){
                      
                       XWPFTable table = it.next();    
                       List<XWPFTableRow> rows=table.getRows();   
                       //读取每一行数据  
                       for (int i = 1; i < rows.size(); i++) {  
                           XWPFTableRow  row = rows.get(i);  
                           //读取每一列数据  
                           List<XWPFTableCell> cells = row.getTableCells();   
                           for (int j = 0; j < cells.size(); j++) {  
                               XWPFTableCell cell=cells.get(j);  
                               //输出当前的单元格的数据  
                               System.out.println(cell.getText());  
                          }  
                       }  
                   }  
               }
            }catch(Exception e) {
                e.printStackTrace();
            }
        }

      首先肯定是io读取文档,利用传进来的地址,接着有一个if判断语句,这个语句主要是为了判断word的版本的。因为目前word有doc和docx两种格式,这两种处理的方式不太一样。我这里用的是docx格式,判断完成后,用XWPFDocument来接收word文档信息,再用迭代器来便利word中的表格,表格肯定是有行有列,两个for循环,输出整个行列。

    运行结果

     

    转载于:https://www.cnblogs.com/GoForMyDream/p/8559072.html

    展开全文
  • 实战 | JAVA读取WORD,包含表格

    千次阅读 2021-03-12 15:19:47
    不能每天都发鸡汤呀,今天分享一篇开发实战。业务需求我们有这样一个需求,需要抽取出WORD文档中的内容,然后组装成特定的json格式发送给第三方引擎接口,输入协议如下:{ "...

    不能每天都发鸡汤呀,今天分享一篇开发实战。

    业务需求

    我们有这样一个需求,需要抽取出WORD文档中的内容,然后组装成特定的json格式发送给第三方引擎接口,输入协议如下:

    {
        "tables": [
            {
                "cells": [
                    {
                        "col": 1,
                        "row_span": 1,
                        "row": 1,
                        "col_span": 1,
                        "content": "车辆名称"
                    }
                ],
                "id": 0,
                "row_num": 2
            }
        ],
        "paragraps": [
            {
                "para_id": 1,
                "content": "Hello,JAVA日知录"
            }
        ]
    }
    

    这个输入格式一看就是需要我们分段落和表格读取word中的内容,既然需求已定,那就直接开始动手写代码吧。

    基于POI实现

    把 “java如何读取word” 拿到百度去搜索,答案基本都是利用POI来实现。当然利用POI确实可以实现按段落和表格提取出内容并组装成上述格式,但是在实践过程中有下面2个问题:

    • 需要分别处理两种格式docxdocPOI使用不同的API来读取docx和doc,所以读取逻辑我们需要编写两次。
       

    • POI读取doc的段落时会把表格的内容也读取出来 这个问题比较坑,poi有单独的方法读取文档中所有表格,但是在读取doc格式段落文档的时候会把表格内容也读取出来,所以我们需要用如下方法排除掉表格:

    //读取doc
    HWPFDocument doc = new HWPFDocument(stream);
    Range range = doc.getRange();
    
    //读取段落
    int num = range.numParagraphs();
    Paragraph para;
    for (int i=0; i<num; i++) {
        para = range.getParagraph(i);
        //排除表格内容
        if (!para.isInTable()) {
            System.out.println(para.text());
        }
    }
    

    考虑以上两种原因,我们最后并没有采取POI来实现word内容提取功能,而是采用第二种方法,即利用 Spire.Doc for Java 来实现。

    Spire.Doc for Java

    Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建、读取、编辑、转换和打印等功能集成到自己的 Java 应用程序中。
    作为一款完全独立的组件,Spire.Doc for Java 的运行环境无需安装 Microsoft Office。官网地址是 https://www.e-iceblue.cn/,我们项目中使用的开源免费版。

    • 首先我们修改maven仓库地址

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    
    • 引入对应的jar包

    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc.free</artifactId>
        <version>3.9.0</version>
    </dependency>
    
    • 读取word,这里展示的是测试类

    public class SpireApplication {
    
        public static void main(String[] args) {
            String path = "D:\\testDoc22.doc";
            spireParaghDoc(path);
            spireForTableOfDoc(path); 
        }
    
        //读取段落
        public static void spireParaghDoc(String path) {
            Document doc = new Document(path);
            for (int i = 0; i < doc.getSections().getCount(); i++) {
                Section p = doc.getSections().get(i);
                for (int j = 0; j < p.getParagraphs().getCount(); j++) {
                    Paragraph paragraph = p.getParagraphs().get(j);
                    System.out.println(paragraph.getText());
                }
            }
        }
    
        //读取表格
        public static void spireForTableOfDoc(String path) {
            Document doc = new Document(path);
            for (int i = 0; i < doc.getSections().getCount(); i++) {
                Section p = doc.getSections().get(i);
                for (int j = 0; j < p.getBody().getChildObjects().getCount(); j++) {
                    DocumentObject obj = p.getBody().getChildObjects().get(j);
                    if (obj.getDocumentObjectType() == DocumentObjectType.Table) {
                        Table table = (Table) obj;
                        for (int k = 0; k < table.getRows().getCount(); k++) {
                            TableRow rows = table.getRows().get(k);
                            for (int p = 0; p < rows.getCells().getCount(); p++) {
                                for (int h = 0; h < rows.getCells().get(p).getParagraphs().getCount(); h++) {
                                    Paragraph f = rows.getCells().get(p).getParagraphs().get(h);
                                    System.out.println(f.getText());
                                }
                            }
                        }
                    }
                }
            }
        }
    
    }
    

    通过上面代码我们就可以按段落和表格读取WORD中的内容,而后根据系统业务要求的格式进行封装即可。

    以上,希望对你有所帮助!


    这里为大家准备了一份小小的礼物,关注公众号,输入如下代码,即可获得百度网盘地址,无套路领取!

    001:《程序员必读书籍》
    002:《从无到有搭建中小型互联网公司后台服务架构与运维架构》
    003:《互联网企业高并发解决方案》
    004:《互联网架构教学视频》
    006:《SpringBoot实现点餐系统》
    007:《SpringSecurity实战视频》
    008:《Hadoop实战教学视频》
    009:《腾讯2019Techo开发者大会PPT》

    010: 微信交流群

     

     

    展开全文
  • java实现word表格指定位置盖章,并且设置印章悬浮于文字之上,达到跟用实体印章在A4纸上盖章一样的效果
  • 如何用java生成动态word表格,以及在表格中插入图片是一个难题,花了两天时间做出来的,希望对大家有帮助 需要jar包:iText-2.1.7.jar, iText-rtf-2.1.7.jar, iTextAsian.jar和jxl.jar 注意前两个jar包的版本要能...
  • java利用poi读取word文档内容所依赖的jar包。poi可以读取doc、docx格式文档。
  • poi用的是3.14版本,所有该加入的包都加入了,读取word表格的方法也是网上通用的,但是现在遇到一个问题,在读取一个word文档中的多个表格的时候中间某一个表格会读错行或列,比如把上一行的数据读到了下一行的...
  • java读取word表格方法

    千次阅读 2015-10-14 10:14:43
    首先网上下载poi插件poi-bin-3.9-20121203...import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.h

    首先网上下载poi插件poi-bin-3.9-20121203.zip

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;

    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    import org.apache.poi.hwpf.usermodel.Table;
    import org.apache.poi.hwpf.usermodel.TableCell;
    import org.apache.poi.hwpf.usermodel.TableIterator;
    import org.apache.poi.hwpf.usermodel.TableRow;

    import java.io.File;   
    import java.io.FileInputStream;   
    import java.io.InputStream;   
      
    import org.apache.poi.POIXMLDocument;   
    import org.apache.poi.POIXMLTextExtractor;   
    import org.apache.poi.hwpf.extractor.WordExtractor;   
    import org.apache.poi.openxml4j.opc.OPCPackage;   
    import org.apache.poi.xwpf.extractor.XWPFWordExtractor; 


    import org.apache.poi.poifs.filesystem.POIFSFileSystem;

    public class ExportDocImpl
    {
     public void testWord(){
      try{
          FileInputStream in = new FileInputStream("D:\\sinye.doc");//载入文档
         POIFSFileSystem pfs = new POIFSFileSystem(in);   
          HWPFDocument hwpf = new HWPFDocument(pfs);   
          Range range = hwpf.getRange();//得到文档的读取范围
          TableIterator it = new TableIterator(range);
         //迭代文档中的表格
          while (it.hasNext()) {   
              Table tb = (Table) it.next();   
              //迭代行,默认从0开始
              for (int i = 0; i < tb.numRows(); i++) {   
                  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();   
                          System.out.println(s);
                      } //end for    
                  }   //end for
              }   //end for
          } //end while
      }catch(Exception e){
       e.printStackTrace();
      }
     }//end method
     
    }

    展开全文
  • Java使用poi读取word文档中的表格

    万次阅读 热门讨论 2018-09-14 17:32:44
    使用poi读取文档中的表格,当有多个表格时可以指定需要读取表格,同时支持读取docx和doc格式。需要添加poi的jar包 测试文档如下图: 程序代码:  package com.fise19.read; import java.io....
  • 本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本、图片以及表格等。 【程序环境】 程序编辑环境为IntelliJ IDEA,并在程序中引入了free Spire.Doc.jar,安装的Jdk版本为1.8.0。 【源文档】 ...
  • java语言实现对word表格操作,实现自动批量往数据库中插入数据,节省插入数据时间。
  • Java使用POI读取Word中的表格

    千次阅读 2019-09-23 15:12:08
    个人博客 地址:https://www.wenhaofan.com/a/20190627135921 代码packagelive.autu.word;...importjava.io.FileInputStream; importorg.apache.poi.hwpf.HWPFDocument; importorg.apache.poi.hwpf.usermodel.Paragr...
  • 网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n...换行的word导致另一个程序读取的时候整个段落全部读取,而分段则会一段一段的读取
  • 其中表格宽度设置,不起效果,代码以注释。通过每个单元格的宽度设置,间接放大宽度。 我的代码如下: package sym_cpts.poi.docx; import java.io.FileInputStream; import java.io.FileOutputStre...
  • 本文通过Java程序来展示如何读取Word表格,包括读取表格中的文本和图片。下面是具体实现的步骤和方法。 1. 程序环境准备 代码编译工具:IntelliJ IDEA Jdk版本:1.8.0 测试文档:Word .docx 2013 Jar包:free ...
  • Java通过POI读取Excel遍历数据,根本word模板批量生成word文档,demo可运行,可根据需求修改
  • JAVA读取PDF、WORD、EXCEL等文件的方法
  • 如图所示,假如我要读取word文件内容,业务概述存一行条数据,业务类型存一条数据,办理时限存一条数据,以此类推。那我读取word文件的时候改如何区分他们分别存入呢,不要问我为什么,因为有上万个这样的文档,手动...
  • 本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本、图片以及表格等。 【程序环境】 程序编辑环境为IntelliJ IDEA,并在程序中引入了free Spire.Doc.jar,安装的Jdk版本为1.8.0。 【源文档】 ...
  • Java获取word表格中的数据

    千次阅读 2019-05-17 17:57:58
    Java获取word表格中的数据 2019年04月11日 11:13:07 IT_zhang81 阅读数:20 ...
  • 读取Word文档的各种复杂表格内容

    千次阅读 2018-04-14 15:30:21
    工作上遇到如何读取Word文档中的表格内容,表格是有业务数据意义的,而且有一定规则的,因此不能直接读取表格文本,而是遍历表格单元格进行一行一列读取。表格规则:(1)表格可以有表头,表头也有业务意思(2)一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,489
精华内容 3,795
关键字:

java读取word指定表格

java 订阅