1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
using System;
using System.Collections.Generic;
namespace DigitToChar
{
class Program
{
static void Main(string[] args)
{
int n;
string s;
n = 146;
s = "EP";
Console.WriteLine("Le nombre {0} a pour représentation colonne Excel {1}", n, n.ToExcelColumn());
Console.WriteLine("La colonne Excel {0} a pour indice {1}", s, s.FromExcelColumn());
Console.WriteLine();
n = 26;
s = "Z";
Console.WriteLine("Le nombre {0} a pour représentation colonne Excel {1}", n, n.ToExcelColumn());
Console.WriteLine("La colonne Excel {0} a pour indice {1}", s, s.FromExcelColumn());
Console.WriteLine();
n = 27;
s = "AA";
Console.WriteLine("Le nombre {0} a pour représentation colonne Excel {1}", n, n.ToExcelColumn());
Console.WriteLine("La colonne Excel {0} a pour indice {1}", s, s.FromExcelColumn());
Console.WriteLine();
n = 1;
s = "A";
Console.WriteLine("Le nombre {0} a pour représentation colonne Excel {1}", n, n.ToExcelColumn());
Console.WriteLine("La colonne Excel {0} a pour indice {1}", s, s.FromExcelColumn());
Console.WriteLine();
n = 18278;
s = "ZZZ";
Console.WriteLine("Le nombre {0} a pour représentation colonne Excel {1}", n, n.ToExcelColumn());
Console.WriteLine("La colonne Excel {0} a pour indice {1}", s, s.FromExcelColumn());
Console.WriteLine();
Console.WriteLine("Comptage de AP à PI");
for (int i = "AP".FromExcelColumn(), nb = "PI".FromExcelColumn(); i <= nb; i++)
{
Console.Write(i.ToExcelColumn());
Console.Write(' ');
}
Console.WriteLine();
Console.ReadKey(true);
}
}
public static class IntExtension
{
public static string ToExcelColumn(this int n)
{
if (n < 1)
{
throw new Exception("Les colonnes Excel sont numérotées à partir de 1.");
}
if (n > DigitsToChars.chars.Count)
{
throw new Exception(string.Format("Le programme ne sais pas compter au delà de {0} colonnes. Estimez-vous heureux, Excel est limité à 256 !", DigitsToChars.chars.Count));
}
return DigitsToChars.chars[n - 1];
}
}
public static class StringExtension
{
public static int FromExcelColumn(this string s)
{
if (s.Length == 0 || s.Length > 3)
{
throw new Exception("La chaîne doit faire entre 1 et 3 caractères.");
}
return DigitsToChars.chars.IndexOf(s) + 1;
}
}
public static class DigitsToChars
{
public static List<string> chars;
static DigitsToChars()
{
chars = new List<string>();
for (int i = 0; i < 26; i++)
{
chars.Add(string.Format("{0}", (char)(65 + i)));
}
for (int i = 0; i < 26; i++)
{
for (int j = 0; j < 26; j++)
{
chars.Add(string.Format("{0}{1}", (char)(65 + i), (char)(65 + j)));
}
}
for (int i = 0; i < 26; i++)
{
for (int j = 0; j < 26; j++)
{
for (int k = 0; k < 26; k++)
{
chars.Add(string.Format("{0}{1}{2}", (char)(65 + i), (char)(65 + j), (char)(65 + k)));
}
}
}
}
}
} |
Partager