Este ejemplo usa un iterador capaz de ir desde A
hasta ZZ
.
public static IEnumerable<string> GetColumns()
{
string s = null;
for (char c2 = 'A'; c2 <= 'Z' + 1; c2++)
{
for (char c = 'A'; c <= 'Z'; c++)
{
yield return s + c;
}
s = c2.ToString();
}
}
Esta muestra comienza a A1
y pasa a través de AA1
string currentCell = "A1";
int currentRow = int.Parse(Regex.Match(currentCell, @"\d+").Value);
string currentCol = Regex.Match(currentCell, @"[A-Z]+").Value;
foreach (string column in GetColumns().Where (c => c >= currentCol && currentCol <= "AA"))
{
Console.WriteLine (column + currentRow);
}
Esta muestra comienza a C5
y enumera a través de los próximos 26 columnas.
int columnsToAdd = 26;
currentCell = "C5";
currentRow = int.Parse(Regex.Match(currentCell, @"\d+").Value);
currentCol = Regex.Match(currentCell, @"[A-Z]+").Value;
foreach (string column in GetColumns().Where (c => c >= currentCol))
{
if (columnsToAdd--) == 0)
break;
Console.WriteLine (column + currentRow);
}
¿Has encontrado algún código tú mismo? – BoltClock
Esto debería ser una estructura de datos bastante simple, y usted ya sabe las funciones que desea hacer ... – crashmstr
Pregunta algo relacionada [aquí] (https://stackoverflow.com/q/2208688/465053). – RBT