package com.example.demo.test
import org.apache.poi.ss.usermodel.Sheet
import org.apache.poi.ss.util.CellRangeAddress
import java.util.HashMap
import java.util.Map
/**
* @description: 使用开源的 Apache 的 poi 工具包 对excel中的数据行和单元格进行判断
* @author: zlf
* @create: 2022/4/7 9:19
**/
public class ExcelUtils {
/**
* 判断指定的单元格是否是合并单元格
*
* @param sheet
* @param row 行下标
* @param column 列下标
* @return
*/
public Map<String, String> isMergedRegion(Sheet sheet, int row, int column) {
Map<String, String> map = new HashMap<>()
//判断结果
String flag = "false"
//当前行
String r = "-1"
//当前列
String c = "-1"
//最大row
String mr = String.valueOf(row)
map.put("Row", r)
map.put("Col", c)
map.put("Result", flag)
map.put("MaxRow", mr)
// 得到一个sheet中有多少个合并单元格
int sheetMergeCount = sheet.getNumMergedRegions()
for (int i = 0
// 获取合并后的单元格
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) {
flag = "true"
map.put("Row", String.valueOf(firstRow))
map.put("Col", String.valueOf(firstColumn))
map.put("Result", flag)
map.put("MaxRow", String.valueOf(lastRow))
return map
}
}
}
return map
}
/**
* 判断指定的行是否是合并行以及最大行值
*
* @param sheet
* @param row 行下标
* @param column 列下标
* @return
*/
public Map<String, String> isMergedRow(Sheet sheet, int row, int column) {
Map<String, String> map = new HashMap<String, String>()
//判断结果
String flag = "false"
//最大row
String mr = String.valueOf(row)
map.put("Results", flag)
map.put("MaxRow", mr)
// 得到一个sheet中有多少个合并单元格
int sheetMergeCount = sheet.getNumMergedRegions()
for (int i = 0
// 获取合并后的单元格
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) {
flag = "true"
map.put("Results", flag)
map.put("MaxRow", lastRow + "")
return map
}
}
}
return map
}
}