• poi处理excel的合并单元格写的工具类,支持xlsx和xls


    1.判断当前单元格是不是合并单元格

     1 ...
     2     private boolean isMergedRegion(Sheet sheet, int row, int column) {
     3         //获取合并单元格的数量
     4         int sheetMergeCount = sheet.getNumMergedRegions();
     5         //循环合并的单元格
     6         for (int i = 0; i < sheetMergeCount; i++) {
     7             //获取合并单元格对象
     8             CellRangeAddress range = sheet.getMergedRegion(i);
     9             //获取第i个合并单元格的边界
    10             int firstColumn = range.getFirstColumn();
    11             int lastColumn = range.getLastColumn();
    12             int firstRow = range.getFirstRow();
    13             int lastRow = range.getLastRow();
    14             //通过判断边界的大小范围来判断是不是合并单元格
    15             if (row >= firstRow && row <= lastRow) {
    16                 if (column >= firstColumn && column <= lastColumn) {
    17                     return true;
    18                 }
    19             }
    20         }
    21         return false;
    22     }
    23 ...

    2.获取单元格的边界内容

     1 ...
     2     public Map<String, Integer> getMergedRegionRange(Sheet sheet, int row, int column) {
     3         //获取合并单元格的数量
     4         int sheetMergeCount = sheet.getNumMergedRegions();
     5         //循环获取的合并单元格
     6         for (int i = 0; i < sheetMergeCount; i++) {
     7             CellRangeAddress ca = sheet.getMergedRegion(i);
     8             //获取合并单元格的边界
     9             int firstColumn = ca.getFirstColumn();
    10             int lastColumn = ca.getLastColumn();
    11             int firstRow = ca.getFirstRow();
    12             int lastRow = ca.getLastRow();
    13             //如果这个是合并单元格,将内容放在map里面
    14             if (row >= firstRow && row <= lastRow) {
    15                 if (column >= firstColumn && column <= lastColumn) {
    16                     Row fRow = sheet.getRow(firstRow);
    17                     Map<String, Integer> cellRangeMap = new HashMap<>();
    18                     cellRangeMap.put("firstRow", firstRow);
    19                     cellRangeMap.put("lastRow", lastRow);
    20                     cellRangeMap.put("firstColumn", firstColumn);
    21                     cellRangeMap.put("lastColumn", lastColumn);
    22                     return cellRangeMap;
    23                 }
    24             }
    25         }
    26         return null;
    27     }
    28 ...

    3.获取单元格的值

     1 ...
     2     public String getMergedRegionValue(Sheet sheet, int row, int column) {
     3         //获取合并单元格的数量
     4         int sheetMergeCount = sheet.getNumMergedRegions();
     5         //循环获取的合并单元格
     6         for (int i = 0; i < sheetMergeCount; i++) {
     7             CellRangeAddress ca = sheet.getMergedRegion(i);
     8             int firstColumn = ca.getFirstColumn();
     9             int lastColumn = ca.getLastColumn();
    10             int firstRow = ca.getFirstRow();
    11             int lastRow = ca.getLastRow();
    12             if (row >= firstRow && row <= lastRow) {
    13                 if (column >= firstColumn && column <= lastColumn) {
    14                     Row fRow = sheet.getRow(firstRow);
    15                     Cell fCell = fRow.getCell(firstColumn);
    16                     return getCellValue(fCell);
    17                 }
    18             }
    19         }
    20         return null;
    21     }
    22 ...

    4.设置合并单元格

    ...
    int firstRow = Integer.parseInt(((HashMap) topRangeMap).get("firstRow").toString());
    int lastRow = Integer.parseInt(((HashMap) topRangeMap).get("lastRow").toString());
    int firstColumn = Integer.parseInt(((HashMap) topRangeMap).get("firstColumn").toString());
    int lastColumn = Integer.parseInt(((HashMap) topRangeMap).get("lastColumn").toString());
            CellRangeAddress cra = new CellRangeAddress(firstRow, lastRow, firstColumn, lastColumn);
            sheet.addMergedRegion(cra);
    ...
    昔日我曾苍老,如今风华正茂(ง •̀_•́)ง
  • 相关阅读:
    Chrome cookies folder
    Fat URLs Client Identification
    User Login Client Identification
    Client IP Address Client Identification
    HTTP Headers Client Identification
    The Personal Touch Client Identification 个性化接触 客户识别
    购物车 cookie session
    购物车删除商品,总价变化 innerHTML = ''并没有删除节点,内容仍存在
    453
    购物车-删除单行商品-HTMLTableElement.deleteRow()
  • 原文地址:https://www.cnblogs.com/lgqrlchinese/p/13080051.html
Copyright © 2020-2023  润新知