来自ExcelRange的单元格

Pat*_*man 8 .net c# epplus

这个问题让我完全不解.

我有一个Excel文档加载得很好.它有行,列和数据,我想遍历行.但EPPLus很奇怪.

我走第二排:

ExcelRange range1 = worksheet.Cells[2, worksheet.Dimension.Start.Column, 2, worksheet.Dimension.End.Column];
Run Code Online (Sandbox Code Playgroud)

这让我很{A2:D2}精彩!到目前为止这么好,但后来我想要该行的第一个单元格:

ExcelRange range2 = range1[1,1];
Run Code Online (Sandbox Code Playgroud)

这让我{A1}更糟糕的是,价值range1也改变了,{A1}而不是我选择的那一行.

如何解决此问题并从ExcelRange中获取ExcelRange?

这让我完全感到困惑....感谢任何帮助

Ern*_*e S 2

如果您查看索引器背后的代码,ExcelRange您会发现get实际上会设置基地址(嵌套else):

public ExcelRange this[string Address]
{
    get
    {
        if (_worksheet.Names.ContainsKey(Address))
        {
            if (_worksheet.Names[Address].IsName)
            {
                return null;
            }
            else
            {
                base.Address = _worksheet.Names[Address].Address;
            }
        }
        else
        {
            base.Address = Address;
        }
        _rtc = null;
        return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定他们为什么这样做(我假设有一个实现细节)。但这可以解释为什么引用另一个地址会更改所选范围。因此,就像 Benexx 所说,必须CellsWorksheet.