我需要找出哪个Cells
的Range
在合并的范围内不可见。我需要包含空单元格,但我想排除由于合并单元格而不可见的单元格。 (合并范围中只有一个单元格,行,列可以包含非空值...?)。
我有以下代码:
using (XLWorkbook wb = new XLWorkbook(ExcelFile.FullName))
{
foreach (IXLNamedRange r in wb.NamedRanges)
{
foreach (var c in r.Ranges.Cells())
{
if (c.IsMerged() /*&& something*/)
continue;
/*Do processing of visible values*/
我需要从合并范围中获取可见单元格,如果填充了值,则包含值,即不使用IsEmpty()
。我可以确定,如果范围已合并,但我如何添加条件以仅包括可见单元格?它总是第一列/行吗? IsMerged()
在合并范围内的所有单元格上返回true
,不仅是那些不可见且不能包含值的单元格。
示例问题:
命名范围的地址为C21:D33。我需要C21:C33的值,但我不需要包含值D21:D33 - 它们都是null。但是C21:C33的值也可以为空或空,但我需要它们。 D21:D33不能包含除null之外的任何其他内容,但C21:C33可以包含非空值。我需要所有非空的单元格。
此代码查找单元格C21:C33
:
using (var wb = new XLWorkbook("test.xlsx"))
{
var nr = wb.NamedRange("MyRange");
foreach (var range in nr.Ranges)
{
var cellsToFind = range.Cells(c => c.MergedRange().FirstCell() == c);
Console.WriteLine($"{cellsToFind.First().Address}:{cellsToFind.Last().Address}");
}
}