利用POI 從world表格中取值

  1. 利用POI從world中取值,然後把值保存到數據庫中

  2. 導入jar包(測試需要用到的jar,根據自己實際情況添加),jar包請百度

  3. 或者從官網地址下載poi  

    地址: https://archive.apache.org/dist/poi/release/bin/

    下載如圖 f8b056a497bfecd25ca1650289acf9d4.png-wh_


    測試中,需要其他的jar包,參考如圖

wKioL1nmy6ix7eylAAAyawEukEA152.png-wh_50


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);
	}
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章