标签: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