因为要新建一个站,公司要把word表格的部分行列存到数据库中。之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库,跪了跪了。
但还是把java读取word中表格的方法写一下,先上代码。
1public static void testWord(String filePath){ 2 try{ 3 FileInputStream in = new FileInputStream(filePath);//载入文档 //如果是office2007 docx格式 4 if(filePath.toLowerCase().endsWith("docx")){ 5 //word 2007 图片不会被读取, 表格中的数据会被放在字符串的最后 6 XWPFDocument xwpf = new XWPFDocument(in);//得到word文档的信息 7// List<XWPFParagraph> listParagraphs = xwpf.getParagraphs();//得到段落信息 8 Iterator<XWPFTable> it = xwpf.getTablesIterator();//得到word中的表格 9 10 while(it.hasNext()){ 11 12 XWPFTable table = it.next(); 13 List<XWPFTableRow> rows=table.getRows(); 14 //读取每一行数据 15 for (int i = 1; i < rows.size(); i++) { 16 XWPFTableRow row = rows.get(i); 17 //读取每一列数据 18 List<XWPFTableCell> cells = row.getTableCells(); 19 for (int j = 0; j < cells.size(); j++) { 20 XWPFTableCell cell=cells.get(j); 21 //输出当前的单元格的数据 22 System.out.println(cell.getText()); 23 } 24 } 25 } 26 } 27 }catch(Exception e) { 28 e.printStackTrace(); 29 } 30 }
首先肯定是io读取文档,利用传进来的地址,接着有一个if判断语句,这个语句主要是为了判断word的版本的。因为目前word有doc和docx两种格式,这两种处理的方式不太一样。我这里用的是docx格式,判断完成后,用XWPFDocument来接收word文档信息,再用迭代器来便利word中的表格,表格肯定是有行有列,两个for循环,输出整个行列。
运行结果