使用的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);
}
 


最新文章

  1. 升级Centos的python为2.7(centos python 升级)
  2. java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException错误的解决
  3. 浅谈python的import
  4. Java for LeetCode 211 Add and Search Word - Data structure design
  5. HDU 3537 (博弈 翻硬币) Daizhenyang&#39;s Coin
  6. 部署K2 Blackpearl流程时出错(由于目标计算机积极拒绝,无法连接)
  7. 数据库自定义表值函数Split(@LongStr, @SplitStr, @IsDistinct )
  8. base库中的BarrierClosure
  9. 如何在Eclipse和MyEclipse中安装SVN
  10. Android studio 打开别人的工程
  11. 【转】使用PowerDesigner的建模创建升级管理数据库
  12. elk安装时最常见的报错
  13. .Net Core 在 Linux-Centos上的部署实战教程(二)
  14. JS代码段:返回yyyy-mm-dd hh:mm:ss
  15. Django关于设置自定义404和安装debug-toolbar的笔记
  16. IP网络设计
  17. C++ primer ch6 函数基础-1
  18. 腾讯云点播视频存储(Web端视频上传)
  19. YAML文件中在单一文件中区分多个文件
  20. Java如何设置线程的优先级?

热门文章

  1. 数据结构 双向链表 C语言实现
  2. 第二次Java实验报告
  3. (模板)hdoj1007(分治求平面最小点对)
  4. Design HashMap
  5. 代码中 方法 处提示:This method has a constructor name
  6. 从入门到自闭之Python--虚拟环境如何安装
  7. shiro过滤器机制
  8. imx8移植opencv(3.0以上版本)笔记
  9. c# winfrom 界面设计
  10. Flink的时间类型和watermark机制