这个问题让我完全不解。

我有一个可以很好加载的Excel文档。
它具有行,列和数据,我想遍历行。
但是EPPLus很奇怪。

我采取第二行:

ExcelRange range1 = worksheet.Cells[2, worksheet.Dimension.Start.Column, 2, worksheet.Dimension.End.Column];

这给了我{A2:D2}锦绣!到目前为止一切顺利,但是我想要该行的第一个单元格:
ExcelRange range2 = range1[1,1];

这给了我{A1},更糟糕的是,range1的值也更改为{A1},而不是我选择的行。

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

这让我完全不解..感谢您的帮助

最佳答案

如果查看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;
    }
}

为什么我不确定为什么要这样做(我假设这里有一个实现细节)。但这可以解释为什么引用另一个地址会更改所选范围。因此,就像Benexx所说的,必须直接从CellsWorksheet集合中进行引用。

关于c# - 来自ExcelRange的单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39039858/

10-12 15:27