讀取excel表格合併單元空值?
阿新 • • 發佈:2021-07-13
遍歷讀取excel表格時,讀取合併單元格時,只能讀取第一個單元格值,後面合併單元格值為空。
此時,需要判斷當前單元格是否是合併單元格,是合併單元格的話,取第一個合併單元格值。
如何判斷合併單元格呢?
/** * 判斷指定單元格是否是合併單元格 * @param sheet 當前表格 * @param row 表格的當前行 * @param column 表格的當前列 * @return */ public static boolean isMergedRegion(Sheet sheet,int row,intcolumn){ int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress range = sheet.getMergedRegion(i); int firstColumn = range.getFirstColumn(); int lastColumn = range.getLastColumn();int firstRow = range.getFirstRow(); int lastRow = range.getLastRow(); if (row >= firstRow && row <=lastRow){ if (column >= firstColumn && column <= lastColumn){ return true; } } }return false; }
如何獲取合併單元格的值?
/** * 獲取合併單元格的值 * @param sheet 當前表格 * @param row 表格的當前行 * @param column 表格的當前列 * @return */ public static String getMergeRegionValue(Sheet sheet,int row,int column){ int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress range = sheet.getMergedRegion(i); int firstColumn = range.getFirstColumn(); int lastColumn = range.getLastColumn(); int firstRow = range.getFirstRow(); int lastRow = range.getLastRow(); if (row >= firstRow && row <=lastRow){ if (column >= firstColumn && column <= lastColumn){ Row frow = sheet.getRow(firstRow); Cell cell = frow.getCell(firstColumn); return getCellValue(cell); } } } return null; }
/**
* 獲取單元格的值
* @param cell
* @return
*/
public static String getCellValue(Cell cell){
if (cell == null) return "";
return cell.toString();
}