java poi怎么读取Excel中合并单元格的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java poi怎么读取Excel中合并单元格的值?相关的知识,希望对你有一定的参考价值。

参考技术A

获取合并单元格的值 @param sheet @param row @param column @return。

public String getMergedRegionValue(Sheet sheet, int row, int column)
int sheetMergeCount = sheet.getNumMergedRegions();

for (int i = 0; i < sheetMergeCount; i++)
CellRangeAddress ca = sheet.getMergedRegion(i);
int firstColumn = ca.getFirstColumn();
int lastColumn = ca.getLastColumn();
int firstRow = ca.getFirstRow();
int lastRow = ca.getLastRow();

if (row >= firstRow && row <= lastRow)
if (column >= firstColumn && column <= lastColumn)
Row fRow = sheet.getRow(firstRow);
Cell fCell = fRow.getCell(firstColumn);

return getCellValue(fCell);




return null;

有关java通过poi处理excle中合并单元格的问题

java 通过poi读取当前excle 将一级二级三级编号组合(如第一行组合后应为10010101、第二行为10010102),将组合后的数值复制到全新的excle中第一行第一列中 以此类推本人初学者 麻烦大师们能提供可用的代码 个人觉得难点就在第一个单元格为合并单元格不知道怎么与二、三级菜单对应。

难点是:第一个单元格为合并单元格,不知道怎么与第二,第三级菜单对应
方案一:将合并的单元格还原
步骤:
1.获取合并区域,将合并区域还原,并且还原后的值为之前合并区域值内容。
2.重新按照行读取即可以。

创建数组做映射,无需生成文件

private void decodeMergeCell(HSSFSheet templateSheet)
int numMerge = templateSheet.getNumMergedRegions();
CellRangeAddress region = null;

while(numMerge >0)
region = templateSheet.getMergedRegion(0);

if (region.getFirstColumn() == 0 || region.getFirstColumn() == 1)

HSSFRow row = templateSheet.getRow(region.getFirstRow());
HSSFCell cell = row.getCell(region.getFirstColumn());
String value = cell.getStringCellValue();
templateSheet.removeMergedRegion(0);

for (int j = region.getFirstRow(); j <=region.getLastRow(); j++)

cell = templateSheet.getRow(j).getCell(
region.getFirstColumn());
cell.setCellValue(value);


numMerge = templateSheet.getNumMergedRegions();
参考技术A HSSFSheet.getNumMergedRegions取合并格个数,HSSFSheet.getMergedRegionAt取第几个合并格的合并区域
循环几下就可取到当前格的合并行数

以上是关于java poi怎么读取Excel中合并单元格的值?的主要内容,如果未能解决你的问题,请参考以下文章

poi读取复杂的Excel表格,如图

用java poi包读取Excel单元格

java poi怎么获取excel单元格的内容

poi读取excel 列宽

java poi 导出 excel时 ,合并单元格的问题

求 java用poi包读取excel单元格长度宽度的方法