转载地址https://www.cnblogs.com/GoForMyDream/p/8559072.html
亲测可用
添加依赖
<!-- 导入word需要的 需要导入的依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>4.1.0</version> </dependency>
因为要新建一个站,公司要把word表格的部分行列存到数据库中。之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库,跪了跪了。
但还是把java读取word中表格的方法写一下,先上代码。
public static void testWord(String filePath){ try{ FileInputStream in = new FileInputStream(filePath);//载入文档 //如果是office2007 docx格式 if(filePath.toLowerCase().endsWith("docx")){ //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后 XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息 // List<XWPFParagraph> listParagraphs = xwpf.getParagraphs();//得到段落信息 Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格 while(it.hasNext()){ XWPFTable table = it.next(); List<XWPFTableRow> rows=table.getRows(); //读取每一行数据 for (int i = 1; i < rows.size(); i++) { XWPFTableRow row = rows.get(i); //读取每一列数据 List<XWPFTableCell> cells = row.getTableCells(); for (int j = 0; j < cells.size(); j++) { XWPFTableCell cell=cells.get(j); //输出当前的单元格的数据 System.out.println(cell.getText()); } } } } }catch(Exception e) { e.printStackTrace(); } }
首先肯定是io读取文档,利用传进来的地址,接着有一个if判断语句,这个语句主要是为了判断word的版本的。因为目前word有doc和docx两种格式,这两种处理的方式不太一样。我这里用的是docx格式,判断完成后,用XWPFDocument来接收word文档信息,再用迭代器来便利word中的表格,表格肯定是有行有列,两个for循环,输出整个行列。
运行结果