【发布时间】:2019-03-06 10:16:35
【问题描述】:
我需要找出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()。我可以确定范围是否已合并,但如何添加条件以仅包含可见单元格?它总是第一列/行吗? IsMerged() 在合并范围内的所有单元格上返回 true,而不仅仅是那些不可见且不能包含值的单元格。
示例问题:
命名范围的地址为 C21:D33。 我需要 C21:C33 的值,但我不需要包含 D21:D33 的值 - 它们始终为空。但是 C21:C33 的值也可以为 null 或为空,但我需要它们。 D21:D33 只能包含 null,但 C21:C33 可以包含非 null 值。我需要所有可以非空的单元格。
【问题讨论】:
-
我很难准确理解您想要做什么。
cells that are not visible as a result of merging cells。这对我来说完全没有意义。合并不会改变单元格的可见性。隐藏列或行会更改ClosedXML上下文中单元格的可见性。也许添加您的工作表的屏幕截图并确定您希望找到的单元格。 -
@FrancoisBotha 如果我合并 A1:B1 并在合并的单元格中写入“1”,则 A1 的值为 1,B1 将为空。我只需要为所有合并的单元格获取一个单元格。
-
我在下面更新了我的答案。