gpt4 book ai didi

c# - 使用 EPPLus 获取合并的单元格区域

转载 作者:太空狗 更新时间:2023-10-29 20:12:36 33 4
gpt4 key购买 nike

我正在使用 EPPlus读取 excel 文件。

我有一个单元格是合并单元格的一部分。如何获取此单元格所属的合并范围?

例如:

Assume Range ("A1:C1") 已被合并。

给定范围“B1”,它的 Merge 属性将为真,但没有办法在给定单个单元格的情况下获取合并范围。

如何获取合并范围?

我希望有一个 .MergedRange 可以返回 Range("A1:C1")

最佳答案

没有开箱即用的此类属性,但工作表有一个 MergedCells 属性,其中包含工作表中所有合并单元格地址的数组和一个 GetMergeCellId()方法将为您提供给定单元格地址的索引。

因此,我们可以将这些组合成一个小的扩展方法,您可以使用它来获取地址。像这样:

public static string GetMergedRangeAddress(this ExcelRange @this)
{
if (@this.Merge)
{
var idx = @this.Worksheet.GetMergeCellId(@this.Start.Row, @this.Start.Column);
return @this.Worksheet.MergedCells[idx-1]; //the array is 0-indexed but the mergeId is 1-indexed...
}
else
{
return @this.Address;
}
}

您可以按如下方式使用:

using (var excel = new ExcelPackage(new FileInfo("inputFile.xlsx")))
{
var ws = excel.Workbook.Worksheets["sheet1"];
var b3address = ws.Cells["B3"].GetMergedRangeAddress();

}

(请注意,如果您在多单元格范围内使用此方法,它将仅返回该范围内第一个单元格的合并单元格地址)

关于c# - 使用 EPPLus 获取合并的单元格区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680167/

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