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 ...
随机推荐
- 【VS开发】ConvertBSTRToString(filename) 不能将string转换为BSTR
环境:win7,x64,vs2008 sp1 把VC 6.0的工程文件用VS2008打开,编译报错: error C2664:"_com_util::ConvertBSTRToString& ...
- spring_mvc入门项目的小总结
1.先搭建一个maven的web项目 ,然后把文件夹完善一下,创建一个java的文件夹和resource的问件夹,并指定他们各自的功能. 导入pom.xml文件的依赖 <properties&g ...
- linux各种IPC机制
docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原 ...
- mysql 常见问题整理
一 coalesce 在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,比如 SELECT COALE ...
- thinkphp命令行生成模型类
thinkphp命令行生成模型类 当你需要创建大量的模型类的时候,不妨考虑下命令行生成,可以快速创建模型类. 在windows下面,使用Win+R输入cmd进入命令控制台,切换到项目根目录(也就是th ...
- java如何防止反编译(转)
出处: java如何防止反编译 一些防止java代码被反编译的方法 综述(写在前面的废话) Java从诞生以来,其基因就是开放精神,也正因此,其可以得到广泛爱好者的支持和奉献,最终很快发展壮大,以至于 ...
- 深入理解计算机系统 第十章 系统级I/O 第二遍
了解 Unix I/O 的好处 了解 Unix I/O 将帮助我们理解其他的系统概念 I/O 是系统操作不可或缺的一部分,因此,我们经常遇到 I/O 和其他系统概念之间的循环依赖.例如,I/O 在进程 ...
- windows下 qt5&vs2010 在qtCreator下中文乱码
环境:windows2012下 qt5.3.1 & vs2010 在qtCreator3.1.2下中文乱码 解决方法:在相关文件中加入代码 #ifdef Q_OS_WIN32 #if _MSC ...
- 关于VSS(Volume Shadow Copy Service)一
在开发windows VSS应用程序时 我们应该先下载相关SDK,微软描述如下 When developing your own VSS application, you should observe ...
- 宝塔控制面板+wordpress搭建个人网站
上个月买了服务器和域名之后就搁置了,今天有空闲就来配合教程尝试一下搭建个人网站,下面是网站搭建的详细过程以及中间的一些细节问题,写这篇文章的目的就是希望能够帮到一些小伙伴,或者为以后搭建网站做一些参考 ...