依赖的包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
直接上代码:
try {
InputStream is = new FileInputStream(file);
XWPFDocument doc = new XWPFDocument(is);
List<XWPFParagraph> paras = doc.getParagraphs();
获取word的XWPFParagraph集合,word中,基本单元就是XWPFParagraph对象。
要获取XWPFParagraph中的文本,使用这个方法:
String faultPhenomenon = " " + paras.get(2).getText() + "\n" +
paras.get(4).getText(); //故障现象
要获取表格中的内容,还是先获得表格对象集合:
//获取文档中所有的表格
List<XWPFTable> tables = doc.getTables();
通过遍历表格,取到其中的内容,放到数组中:
for (XWPFTable table : tables) {
//表格属性CTTblPr pr = table.getCTTbl().getTblPr();
//获取表格对应的行
XWPFTableRow firstRow = table.getRow(0); //获得第一行
String secondCell = firstRow.getCell(1).getText();
rows = table.getRows();
if("被叫RBC".equals(secondCell)){ //PRI口的表
for (XWPFTableRow row : rows) {
//获取行对应的单元格
cells = row.getTableCells();
JSONObject obj = new JSONObject();
obj.put("车次号",cells.get(0).getText());
obj.put("被叫RBC",cells.get(1).getText());
obj.put("起呼时间",cells.get(2).getText());
obj.put("呼叫类型",cells.get(3).getText());
obj.put("设备号",cells.get(4).getText());
obj.put("结束时间",cells.get(5).getText());
obj.put("释放原因",cells.get(6).getText());
array_1.add(obj);
}else{
for (XWPFTableRow row : rows) {
//获取行对应的单元格
cells = row.getTableCells();
JSONObject obj = new JSONObject();
obj.put("firstCol",cells.get(0).getText());
obj.put("secondCol",cells.get(1).getText());
array_7.add(obj);
}
}
关闭流就好了:
close(is);
JSONObject object = new JSONObject();
object.put("faultPhenomenon",faultPhenomenon);
object.put("table_7",array_7);
System.out.println(object);
return object.toJSONString();
}catch (Exception ex){
ex.printStackTrace();
return "";
}
都是经过项目验证过的代码,放心使用