在EPPlus

时间:2016-11-25 18:41:51

标签: c# coordinates epplus

我在C#中使用这个库。我在[LetterNumber]表单中输入了坐标。但后来我必须使用迭代器。因此,我需要在[Number,Number]系统中对它们进行转换。

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

然后回来。 对于靠近原点的细胞可能很简单,但对于像AB23这样的细胞则更复杂。还有什么可能是A23或AB23,所以很难说。 我无法相信没有内置任何东西。 我知道使用行,列很容易。这个难题是另一个坐标系的输入。 谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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

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"

你可以做很多方法。