java 使用poi读取word文档存入数据库
使用的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文档存入数据库的更多相关文章
- poi 读取word文档
		1.导入jar包 官网下载地址: https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip 最开始 ... 
- 利用POI读取word文档实例
		package read.document; import java.io.FileInputStream; import java.io.FileNotFoundException; import ... 
- POI生成word文档完整案例及讲解
		一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ... 
- 用java语言通过POI实现word文档的按标题提取
		最近有一个项目需要将一个word文档中的数据提取到数据库中.就去网上查了好多资料,最靠谱的就是用poi实现word文档的提取. 喝水不忘挖井人,我查了好多资料就这个最靠谱,我的这篇博客主要是借鉴htt ... 
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
		今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ... 
- java中读取word文档里的内容
		package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ... 
- Java将数据写入word文档(.doc)
		Java可用org.apache.poi包来操作word文档.org.apache.poi包可于官网上下载,解压后各jar作用如下图所示: 可根据需求导入对应的jar. 一.HWPFDocument类 ... 
- java使用poi读取word(简单,简约,直观)
		java使用poi读取word(简单,简约,直观) 说明 其实poi的官网上面都是有接口和样例的,只是都是英文 例如网址:http://poi.apache.org/spreadsheet/quick ... 
- POI生成WORD文档
		h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ... 
随机推荐
- Android ConstraintLayout 说明和例子
			快速说明 当我们点击一个按钮时,显示效果如下 Baseline的显示需要右键该控件,然后 约束类型 尺寸约束 实心方块,用来调整组件的大小 边界约束 空心圆圈,建立组件之间,组件和parent的约束关 ... 
- airflow原理
			官网: http://airflow.apache.org/installation.html 原理: https://www.cnblogs.com/cord/p/9450910.html 原理介绍 ... 
- (模板)hdoj1007(分治求平面最小点对)
			题目链接:https://vjudge.net/problem/HDU-1007 题意:给定n个点,求平面距离最小点对的距离除2. 思路:分治求最小点对,对区间[l,r]递归求[l,mid]和[mid ... 
- Swoft2.x 小白学习笔记 (三) --- Task、协程
			介绍swoft中 1.Task 2.协程 一:Task任务: 1.配置,在 app/bean.php文件中加入 'httpServer' => [ // ... 'on' => [ Swo ... 
- MySQL-复杂查询及条件-起别名-多表查询-04
			目录 基本查询语句及方法 测试数据创建 创建数据库与表 插入表记录数据 数据展示 常见结果排版 另一种结果排版 \G 简单查询语句的书写与执行顺序 查询语句书写 执行顺序 科普-- 起别名 写法 可以 ... 
- 【题解】P3391 文艺平衡树
			用pb_ds库中的rope水过去的,忽然发现这玩意能水好多模拟题. 详见这个博客:背景的小姐姐真的好看 声明 #include <ext/rope> using namespace __g ... 
- O054、Attach Volume 操作(Part II)
			参考https://www.cnblogs.com/CloudMan6/p/5631328.html 计算节点作为iSCSI initiator 访问存储节点 iSCSI Target 上的v ... 
- CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法_CSS教程
			4要素: width: 125px; //宽度必须 text-overflow: ellipsis/clip; //省略号或裁剪: white-space: nowrap;//强制内容在一行显示; ... 
- Go 工作空间 深度解析
			介绍 这篇文档举例证明了一个简单地 Go package 并且介绍了 go tool,标准的方法来 fetch, build,and install Go package and commands. ... 
- maven 父子工程打包 并且上传linux服务器
			先对父工程进行 mvn clean 再对子工程执行 install wagon:upload-single wagon:sshexec 使用wagon前提: 本地maven 的settings.xml ... 
