码迷,mamicode.com
首页 > 其他好文 > 详细

利用POI 从world表格中取值

时间:2017-10-18 19:50:11      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:poi从world取值

  1. 利用POI从world中取值,然后把值保存到数据库中

  2. 导入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表格中取值

标签:poi从world取值

原文地址:http://zhuws.blog.51cto.com/11134439/1973698

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!