gpt4 book ai didi

c# - 使用 NPOI 从 Excel 电子表格中检索合并单元格的值

转载 作者:行者123 更新时间:2023-12-04 20:03:54 29 4
gpt4 key购买 nike

我正在使用 NPOI 将数据从 Excel 检索到文本文件中。基于 Excel 表,我应该以这种方式显示数据。

Excel Sheet
13/3/19 的单元格Excel 表中的两行合并,我不知道如何检索 May 的合并单元格值并显示它。有没有人有任何想法?

最佳答案

在 Excel 中,如果一个单元格与其他单元格合并,则合并区域中的第一个单元格是具有实际值的单元格。该区域中的其他单元格为空白。合并的区域保留在工作表对象中,因为它们可以跨越多行和多列。

要获得值(value),您需要:

  • 通过查看 IsMergedCell 来检查当前单元格是否被合并。单元格本身的属性。
  • 如果单元格被合并,则遍历工作表上的合并区域以找到包含该单元格的区域。
  • 找到包含区域后,从该区域中获取第一个单元格。
  • 从该单元格中获取值。

  • 这是我编写的一个辅助方法,应该可以解决问题:
    public static ICell GetFirstCellInMergedRegionContainingCell(ICell cell)
    {
    if (cell != null && cell.IsMergedCell)
    {
    ISheet sheet = cell.Sheet;
    for (int i = 0; i < sheet.NumMergedRegions; i++)
    {
    CellRangeAddress region = sheet.GetMergedRegion(i);
    if (region.ContainsRow(cell.RowIndex) &&
    region.ContainsColumn(cell.ColumnIndex))
    {
    IRow row = sheet.GetRow(region.FirstRow);
    ICell firstCell = row?.GetCell(region.FirstColumn);
    return firstCell;
    }
    }
    return null;
    }
    return cell;
    }

    然后,当您遍历单元格时,您可以为每个单元格调用此方法。如果单元格被合并,它将返回具有该合并区域的值的单元格,否则它将只返回原始单元格。那么你就不必再考虑它了。
    cell = GetFirstCellInMergedRegionContainingCell(cell);
    if (cell != null)
    {
    // get the value
    }

    关于c# - 使用 NPOI 从 Excel 电子表格中检索合并单元格的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61013362/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com