1.导入jar包
官网下载地址:
https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip
最开始的时候没有导入xmlbeans包,运行的时候报了个异常,然后学乖了
2.对象的说明
2.1关于word有两个对象;XWPFDocument和HWPFDocument分别对应word2007以上和word2003具体的说明见下面这段话:
来自某位大牛的博客,链接找不到了
2.2
3.读取
3.1 XWPFDocument读取word,并将其中的图片保存
里面的CTP似乎是封装了文档的属性,但查了很多资料讲的也都很模糊,希望有高手看到可以不吝赐教
1 @Test 2 public void test1() throws IOException { 3 InputStream is = new FileInputStream(new File("e:/test.docx")); 4 XWPFDocument doc = new XWPFDocument(is); 5 6 List<XWPFParagraph> paragraphs = doc.getParagraphs(); 7 for(XWPFParagraph paragraph:paragraphs) { 8 // print(paragraph.getText()); 9 10 //获取段落属性 11 /*CTPPr pPr = paragraph.getCTP().getPPr(); 12 print(pPr);*/ 13 14 } 15 16 //获取表格 表格--->行--->单元格 17 /*List<XWPFTable> tables = doc.getTables(); 18 for(XWPFTable table: tables) { 19 //表格属性 20 print(table.getCTTbl()); 21 List<XWPFTableRow> rows = table.getRows(); 22 for(XWPFTableRow row:rows) { 23 List<XWPFTableCell> tableCells = row.getTableCells(); 24 for(XWPFTableCell cell:tableCells) { 25 print(cell.getText()); 26 27 //单元格属性 28 print(cell.getCTTc()); 29 30 } 31 } 32 }*/ 33 String dirPath = "e:/picture_test_docx/"; 34 File dir = new File(dirPath); 35 if(!dir.exists()) { 36 dir.getParentFile().mkdirs(); 37 } 38 BufferedOutputStream bos =null; 39 //获取图片 40 List<XWPFPictureData> pictures = doc.getAllPictures(); 41 for(XWPFPictureData picture:pictures) { 42 byte[] data = picture.getData(); 43 String picName = picture.getFileName(); 44 print("-------"+picture.getPackagePart());; 45 UUID uuid = UUID.randomUUID(); 46 File file = new File(dirPath+uuid + picName); 47 if(!file.exists()) { 48 file.getParentFile().mkdirs(); 49 file.createNewFile(); 50 }else { 51 file.delete(); 52 } 53 bos = new BufferedOutputStream(new FileOutputStream(file)); 54 bos.write(data); 55 bos.flush(); 56 } bos.close(); 57 doc.close(); 58 is.close(); 59 }
注意看这图,标注的地方,输出的东西,你可能会很奇怪word文档怎么会有包的结构?把word文件改成zip或者rar打开后你就可以发现word的包结构
3.2 XWPFWordExtractor读取
ps:用poi用word中插入图片时有个无法显示的bug,网上有一些解决方案,但试了几个都没法用,希望将来有这种需求的时候bug已修复
原文地址:https://www.cnblogs.com/tele-share/p/8196643.html
时间: 2024-10-10 05:46:47