标签:poi从world取值
利用POI从world中取值,然后把值保存到数据库中
导入jar包(测试需要用到的jar,根据自己实际情况添加),jar包请百度
2.demo,可根据这个进行自己实际需求的改变
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
public class getWorldValue {
public static void main(String[] args) throws Exception, IOException {
getDemo("WebContent/word/styledTable.docx");
}
// Demo 原始代码参考,简单,复杂的表格都是从这代码进行演化的
public static void getDemo(String worldPath) throws Exception, IOException{
// 创建FileInputStream, 并读取 world内容
//XWPFDocument document = new XWPFDocument(new FileInputStream(worldPath));
XWPFDocument document = new XWPFDocument(new FileInputStream(worldPath));
// 获取所有表格
List<XWPFTable> tables = document.getTables();
// 对所有表格进行循环
for (XWPFTable table : tables) {
// 获取表格的行
List<XWPFTableRow> rows = table.getRows();
// 通过遍历,获取所有行的所有值
for (XWPFTableRow row : rows) {
// 获取表格的每个单元格
List<XWPFTableCell> tableCells = row.getTableCells();
for (XWPFTableCell cell : tableCells) {
// 获取单元格的内容
String text = cell.getText();
System.out.print(text);
}
}
}
}
}2.world中复杂表格的实际应用测试
// 创建FileInputStream, 并读取 world内容
// AllPath: 是world路径
XWPFDocument document = new XWPFDocument(new FileInputStream(AllPath));
// 获取所有表格
List<XWPFTable> tables = document.getTables();
// 定义全局变量,用来存储相同的合并单元格值,如果有多个,请定义多个
String cellValue = "";
// 用来存储一样的值,有可能一行没有值,如果是这样,不用保存
String objValue = "";
for (XWPFTable table : tables) {
// 获取表格的行
List<XWPFTableRow> rows = table.getRows();
// 这里我们可以改变 i的初始值,来跳过表头的取值
for (int j = 3; j < rows.size(); j++) {
// 获取当前行每个单元格的值
List<XWPFTableCell> tableCells = rows.get(j).getTableCells();
// 判断表格行是否是空数据
for (int k = 0; k < tableCells.size(); k++) {
objValue = tableCells.get(k).getText();
// 如果objValue 不为空,跳出当前行
if(!"".equals(objValue)){
break;
}
}
// 再次判断objValue值是否为空,如果为空,跳出本次循环
if("".equals(objValue)){
continue;
}else{
// objValue不为空,则重置objValue值
objValue = "";
}
// 对象,把取到的world表格值,保存对象中
ShiYsJyjcNlsqb jyjcNlsqb = new ShiYsJyjcNlsqb();
// 如果有合并单元格,合并值,下面也需要,在这里进行处理,如果有多行合并单元格,写多个
if(!"".equals(tableCells.get(1).getText())){
cellValue = tableCells.get(1).getText();
}
jyjcNlsqb.setSqsId(sqsId);// sqsid
jyjcNlsqb.setLeib(cellValue);// 类别
jyjcNlsqb.setCpxh(tableCells.get(2).getText());// 产品序号
jyjcNlsqb.setCpmc(tableCells.get(3).getText());//名称
jyjcNlsqb.setYjbzmc(tableCells.get(4).getText());// 依据标准编号....
jyjcNlsqb.setXzfw(tableCells.get(5).getText());// 限制范围
jyjcNlsqb.setSm(tableCells.get(6).getText());// 说明
// 保存上传到本机的world中的表格数据
nlsqbService.add(jyjcNlsqb);
}
}本文出自 “永恒之光” 博客,请务必保留此出处http://zhuws.blog.51cto.com/11134439/1973698
标签:poi从world取值
原文地址:http://zhuws.blog.51cto.com/11134439/1973698