1. 程式人生 > 其它 >讀取excel表格合併單元空值?

讀取excel表格合併單元空值?

遍歷讀取excel表格時,讀取合併單元格時,只能讀取第一個單元格值,後面合併單元格值為空。

此時,需要判斷當前單元格是否是合併單元格,是合併單元格的話,取第一個合併單元格值。

如何判斷合併單元格呢?

 /**
     * 判斷指定單元格是否是合併單元格
     * @param sheet   當前表格
     * @param row      表格的當前行
     * @param column  表格的當前列
     * @return
     */
    public static boolean isMergedRegion(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){ 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();
}