使用的poi jar包需要自己下载

读取的word文档中含有多个图片,所以分为两个部分,一个部分读取各个表格中内容,一个是将所有图片截取出来:

   /** * 遍历段落内容
* docxReadPath 文档地址
* uploadPic 图片上传地址
* picFile 图片保存后地址
* @param document
* @return XWPFDocument
* @throws IOException
*/
public static String readPar(XWPFDocument document,String docxReadPath,String uploadPic,String picFile){
String fail="sucess";
     Iterator<XWPFParagraph> itPara = document.getParagraphsIterator();
try {
  //读取word中所有内容
        while (itPara.hasNext()) {
      
        XWPFParagraph paragraph = (XWPFParagraph) itPara.next();

          //run表示相同区域属性相同的字符,结果以‘,’分隔;
          List<XWPFRun> runs =paragraph.getRuns();// paragraph.getRuns();
          String fileName="";
          for (int i = 0; i < runs.size(); i++){

            String oneparaString = runs.get(i).getText(runs.get(i).getTextPosition());

             System.out.println(oneparaString);

          }

       }
              List<XWPFPictureData> picList = document.getAllPictures();for (XWPFPictureData pic : picList) {
byte[] bytev = pic.getData();
String imgName=pic.getFileName();
        System.out.println("=====图片生成中========"+imgName);
if(!"image1.jpeg".equals(imgName)){
FileOutputStream fos = new FileOutputStream(uploadPic+"/"+imgName);
fos.write(bytev);
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("=====错误信息===="+e.getMessage());
fail="false";
} return fail;
}
 /**
* 遍历所有表格的内容
* @param document
* @throws FileNotFoundException
*/
public static void readTableContent(XWPFDocument document) {
Iterator<XWPFTable> itTable = document.getTablesIterator();
int ind = 0;
while (itTable.hasNext()){
ind++;
XWPFTable table = (XWPFTable) itTable.next();
//行
int rcount = table.getNumberOfRows();
for (int i = 0; i < rcount; i++){
XWPFTableRow row = table.getRow(i);
//列
List<XWPFTableCell> cells = row.getTableCells();
int len = cells.size();
for(int j = 0;j < len;j++){
XWPFTableCell xc = cells.get(j);
String sc = xc.getText();
System.out.println("第"+ ind +"个表格,第"+ (i+1) +"行,第"+ (j+1) +"列:" +sc);
}
}
}
}
 /**
* 读取文件
* @param srcPath
* @return XWPFDocument
*/
public static XWPFDocument read_file(String srcPath)
{
String[] sp = srcPath.split("\\.");
if ((sp.length > 0) && sp[sp.length - 1].equalsIgnoreCase("docx"))
{
try {
FileInputStream fis = new FileInputStream(srcPath);
XWPFDocument xdoc = new XWPFDocument(fis);
XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc); // OPCPackage pack = POIXMLDocument.openPackage(srcPath);
// XWPFDocument doc = new XWPFDocument(pack);
return xdoc;
} catch (IOException e) {
System.out.println("读取文件出错!");
e.printStackTrace();
return null;
}
}
return null;
}

public static void main(String[] args) throws IOException{
String docx = "F:\\bb.docx";
XWPFDocument document = read_file(docx);
readPar(document);
readTableContent(document);
}
 


java 使用poi读取word文档存入数据库的更多相关文章

  1. poi 读取word文档

    1.导入jar包 官网下载地址: https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip 最开始 ...

  2. 利用POI读取word文档实例

    package read.document; import java.io.FileInputStream; import java.io.FileNotFoundException; import ...

  3. POI生成word文档完整案例及讲解

    一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...

  4. 用java语言通过POI实现word文档的按标题提取

    最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ...

  5. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...

  6. java中读取word文档里的内容

    package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...

  7. Java将数据写入word文档(.doc)

    Java可用org.apache.poi包来操作word文档.org.apache.poi包可于官网上下载,解压后各jar作用如下图所示: 可根据需求导入对应的jar. 一.HWPFDocument类 ...

  8. java使用poi读取word(简单,简约,直观)

    java使用poi读取word(简单,简约,直观) 说明 其实poi的官网上面都是有接口和样例的,只是都是英文 例如网址:http://poi.apache.org/spreadsheet/quick ...

  9. POI生成WORD文档

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

随机推荐

  1. Android ConstraintLayout 说明和例子

    快速说明 当我们点击一个按钮时,显示效果如下 Baseline的显示需要右键该控件,然后 约束类型 尺寸约束 实心方块,用来调整组件的大小 边界约束 空心圆圈,建立组件之间,组件和parent的约束关 ...

  2. airflow原理

    官网: http://airflow.apache.org/installation.html 原理: https://www.cnblogs.com/cord/p/9450910.html 原理介绍 ...

  3. (模板)hdoj1007(分治求平面最小点对)

    题目链接:https://vjudge.net/problem/HDU-1007 题意:给定n个点,求平面距离最小点对的距离除2. 思路:分治求最小点对,对区间[l,r]递归求[l,mid]和[mid ...

  4. Swoft2.x 小白学习笔记 (三) --- Task、协程

    介绍swoft中 1.Task 2.协程 一:Task任务: 1.配置,在 app/bean.php文件中加入 'httpServer' => [ // ... 'on' => [ Swo ...

  5. MySQL-复杂查询及条件-起别名-多表查询-04

    目录 基本查询语句及方法 测试数据创建 创建数据库与表 插入表记录数据 数据展示 常见结果排版 另一种结果排版 \G 简单查询语句的书写与执行顺序 查询语句书写 执行顺序 科普-- 起别名 写法 可以 ...

  6. 【题解】P3391 文艺平衡树

    用pb_ds库中的rope水过去的,忽然发现这玩意能水好多模拟题. 详见这个博客:背景的小姐姐真的好看 声明 #include <ext/rope> using namespace __g ...

  7. O054、Attach Volume 操作(Part II)

    参考https://www.cnblogs.com/CloudMan6/p/5631328.html     计算节点作为iSCSI initiator 访问存储节点 iSCSI Target 上的v ...

  8. CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程

    4要素: width: 125px;  //宽度必须 text-overflow: ellipsis/clip; //省略号或裁剪: white-space: nowrap;//强制内容在一行显示; ...

  9. Go 工作空间 深度解析

    介绍 这篇文档举例证明了一个简单地 Go package 并且介绍了 go tool,标准的方法来 fetch, build,and install Go package and commands. ...

  10. maven 父子工程打包 并且上传linux服务器

    先对父工程进行 mvn clean 再对子工程执行 install wagon:upload-single wagon:sshexec 使用wagon前提: 本地maven 的settings.xml ...