.net - 为什么 Dimension.End.Column 返回的索引大于具有任何值的最后一列?

标签 .net epplus

使用 EPPlus 阅读电子表格时,我惊讶地看到 Dimension.End.Column 返回比我知道的最后一列更高(基于 1)的索引。

例如,在这样的电子表格中:

   A       B       C       D...
1  value

我希望 Dimension.End.Column 为 1,对应于第一列。

但是,它通常更大。这是为什么?

最佳答案

要回答这个问题,需要深入研究 EpPlus 的源代码。

无论如何,这是我用来获取实际(有值(value)的)维度的扩展方法,即使对于边缘情况也能正常工作:

public static ExcelAddressBase GetValuedDimension(this ExcelWorksheet worksheet)
{
    var dimension = worksheet.Dimension;
    if (dimension == null) return null;
    var cells = worksheet.Cells[dimension.Address];
    Int32 minRow = 0, minCol = 0, maxRow = 0, maxCol = 0;
    var hasValue = false;
    foreach (var cell in cells.Where(cell => cell.Value != null))
    {
        if (!hasValue)
        {
            minRow = cell.Start.Row;
            minCol = cell.Start.Column;
            maxRow = cell.End.Row;
            maxCol = cell.End.Column;
            hasValue = true;
        }
        else
        {
            if (cell.Start.Column < minCol)
            {
                minCol = cell.Start.Column;
            }
            if (cell.End.Row > maxRow)
            {
                maxRow = cell.End.Row;
            }
            if (cell.End.Column > maxCol)
            {
                maxCol = cell.End.Column;
            }
        }
    }
    return hasValue ? new ExcelAddressBase(minRow, minCol, maxRow, maxCol) : null;
}

关于.net - 为什么 Dimension.End.Column 返回的索引大于具有任何值的最后一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23526743/

相关文章:

c# - 使用 EPPlus 设置折线图使用的数据

c# - 不带下划线的 Epplus 超链接

C#:具有显式添加/删除的事件!=典型事件?

C# A 类型不能转换为 B 类型(InvalidCastException)...上下文 hell ?

c# - 缓存包含数据,但无法检索数据

epplus - 如何使用 EPPlus 设置多级可折叠轮廓

c# - EPPlus 行高大小不同

c# - 为什么 EntityFramework 在 edmx 中默认在数据库实体后面附加 1?

.net - .Net 中的图形错误图像插值

c# - epplus公式错误