乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > poi读取<em>Excel</em>,怎么判断这个单元格是否是合并,-excel 判断单元格是

poi读取<em>Excel</em>,怎么判断这个单元格是否是合并,-excel 判断单元格是

作者:乔山办公网日期:

返回目录:excel表格制作


你问的有点含糊,合并的单元格就是一个单元格了 如果要读取合并以后单元格中的内容,可以先读取这个文件中有多少个MergedRegion,然后再通过判断要读取的单元格的行和列号是否是这个MergedRegion的起始位置来读取内容。
  答题不易,互相理解,您的采纳是我前进的动力,
  如果我的回答没能帮助您,请继续追问。您也可以向我们团队发出请求,会有更专业的人来为您解答!


//poi-3.7.jar
/**
* 合并单元格处理--加入list
*
* @param sheet
* @return
*/
public void getCombineCell(HSSFSheet sheet, List<CellRangeAddress> list) {
// 获得一个 sheet 中合并单元格的数量
int sheetmergerCount = sheet.getNumMergedRegions();
// 遍历合并单元格
for (int i = 0; i < sheetmergerCount; i++) {
// 获得合并单元格加入list中
CellRangeAddress ca = sheet.getMergedRegion(i);
list.add(ca);
}
}

/**
* 判断单元格是否为合并单元格
*
* @param listCombineCell
* 存放合并单元格的list
* @param cell
* 需要判断的单元格
* @param sheet
* sheet
* @return
*/
public static Boolean isCombineCell(List<CellRangeAddress> listCombineCell,
HSSFCell cell, HSSFSheet sheet) {
int firstC = 0;
int lastC = 0;
int firstR = 0;
int lastR = 0;
for (CellRangeAddress ca : listCombineCell) {
// 获得合并单元格的起始行, 结束行, 起始列636f70797a64337, 结束列
firstC = ca.getFirstColumn();
lastC = ca.getLastColumn();
firstR = ca.getFirstRow();
lastR = ca.getLastRow();
if (cell.getColumnIndex() <= lastC&& cell.getColumnIndex()>= firstC) {
if (cell.getRowIndex() <= lastR && cell.getRowIndex() >= firstR) {
return true;
}
}
}
return false;
}
}
假设此合并单元格区域名为merged,那么 合并单元格的行数=merged.getLastRow()-merged.getFirstRow()

//判断表中是否含有合并单元格
public boolean hasMerged() {
return sheet.getNumMergedRegions() > 0 ? true : false;
}

// 判断指定区域内e79fa5e98193e58685e5aeb9364是否含有合并单元格
public boolean hasMerged(Region region) {
for (int row = region.getRowFrom(); row < region.getRowTo(); row++) {
for (short col = region.getColumnFrom(); col < region.getColumnTo(); col++){
for (int i = 0; i < sheet.getNumMergedRegions(); i++) {
Region r = sheet.getMergedRegionAt(i);
if (r.contains(row, col)) {
return true;
}
}
}
}
return false;
}

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网