在 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"
有很多方法可以做到。
我在 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"
有很多方法可以做到。