如何确定合并区域中的哪些单元格可见并且可以具有值?
How to determine which cells in a merged range are visible and can have a value?
我需要找出 Range
中的哪些 Cells
在合并的范围内不可见。我需要包含空单元格,但我想排除因合并单元格而不可见的单元格。 (合并区域中只有一个单元格、行、列可以包含非空值...?)。
我有以下代码:
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()
。我可以确定范围是否已合并,但如何添加条件以仅包含可见单元格?它总是第一个 column/row 吗? IsMerged()
returns true
合并区域中的所有单元格,不仅是那些不可见且不能包含值的单元格。
示例问题:
命名范围的地址为 C21:D33。
我需要 C21:C33 的值,但不需要包含值 D21:D33 - 它们始终为空。但是 C21:C33 的值也可以为 null 或空,但我需要它们。 D21:D33 不能包含除 null 以外的任何其他值,但 C21:C33 可以包含非 null 值。我需要所有非空的单元格。
此代码查找单元格 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}");
}
}
我需要找出 Range
中的哪些 Cells
在合并的范围内不可见。我需要包含空单元格,但我想排除因合并单元格而不可见的单元格。 (合并区域中只有一个单元格、行、列可以包含非空值...?)。
我有以下代码:
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()
。我可以确定范围是否已合并,但如何添加条件以仅包含可见单元格?它总是第一个 column/row 吗? IsMerged()
returns true
合并区域中的所有单元格,不仅是那些不可见且不能包含值的单元格。
示例问题:
命名范围的地址为 C21:D33。 我需要 C21:C33 的值,但不需要包含值 D21:D33 - 它们始终为空。但是 C21:C33 的值也可以为 null 或空,但我需要它们。 D21:D33 不能包含除 null 以外的任何其他值,但 C21:C33 可以包含非 null 值。我需要所有非空的单元格。
此代码查找单元格 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}");
}
}