在 EPPlus 中将地址引用样式 A1 转换为样式 R1C1

Convert Address Reference Style A1 to Style R1C1 in EPPlus

我在 C# 中使用这个库。我有 [LetterNumber] 形式的输入坐标。但后来我必须处理迭代器。因此我需要在 [Number,Number] 系统中转换它们。

Eg. B5--->2,5 and back

然后回来。 对于靠近原点的细胞来说可能很简单,但对于像 AB23 这样的细胞来说就更复杂了。更重要的是它可能是 A23 或 AB23 所以很难说。 我不敢相信没有内置的东西。 我知道使用行、列很容易。难题是将另一个坐标系作为输入。 谢谢

我认为最接近内置的东西是 ExcelCellBase 中的静态方法,如下所示:

Console.WriteLine(ExcelCellBase.TranslateToR1C1("AB23", 0, 0)); //Prints "R[23]C[28]"
Console.WriteLine(ExcelCellBase.TranslateFromR1C1("R23C28", 0, 0)); //Prints "$AB"

但是如果你喜欢更简单的输出,你可以像这样伪造它:

var addr = new ExcelAddress("AB23");
Console.WriteLine($"{addr.Start.Row},{addr.Start.Column}");  //Prints "23,28"

addr = new ExcelAddress(23, 28, 23, 28);
Console.WriteLine(addr.Address);  //Prints "AB23"

但是如果你想遍历一个范围,你可以这样做:

addr = new ExcelAddress("A10:AB23");
var s = addr.Start;
var e = addr.End;
Console.WriteLine($"Rows={e.Row - s.Row} Cols={e.Column - s.Column}");  //Prints "Rows=13 Cols=27"

有很多方法可以做到。