利用POI從world中取值,然後把值保存到數據庫中
導入jar包(測試需要用到的jar,根據自己實際情況添加),jar包請百度
或者從官網地址下載poi
地址: https://archive.apache.org/dist/poi/release/bin/
測試中,需要其他的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); } }