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
|
public void fillTable()
{
IDictionary<string, List<string>> paysVilles = new Dictionary<string, List<string>>();
IDictionary<string, List<string>> paysMois = new Dictionary<string, List<string>>();
IDictionary<KeyValuePair<string, string>> villesMoisVal = new Dictionary<KeyValuePair<string, string>>();
foreach (MaClasse c in listMaClasse)
{
if(!paysVilles.Keys.Contains(c.pays))
paysVilles.Add(c.pays, new List<string>());
if(!paysVilles[c.pays].Contains(c.ville))
paysVilles[c.pays].Add(c.ville);
if(!paysMois.Keys.Contains(c.pays))
paysMois.Add(c.pays, new List<string>());
if(!paysMois[c.pays].Contains(c.mois))
paysMois[c.pays].Add(c.mois);
villesMoisVal.Add(new KeyValuePair<string, string>(c.ville, c.mois), c.val); //je pense qu'il n'y a qu'un seul triplet <ville, mois, val> ex : Paris Janvier 2000 et Paris Janvier 1500 impossible
}
int row = 0;
foreach(string pays in paysVilles.Keys) //ou paysMois.Keys normalement c'est pareil
{
++row;
workSheet.Cells[row, "A"] = pays;
int column = 2;
foreach(string mois in paysMois[pays])
{
workSheet.Cells[row, intToColumn(column)] = mois;
++column;
}
foreach(string ville in paysVille[pays])
{
++row;
workSheet.Cells[row, "A"] = ville;
column = 2;
foreach(string mois in paysMois[pays])
{
workSheet.Cells[row, intToColumn(column)] = villesMoisVal[new KeyValuePair<string, string>(ville, mois)];
++column;
}
}
++row;
}
}
private static string intToColumn(int n)
{
if (n <= 26 && n > 0)
{
return (char)(n + 64) + "";
}
else if (n <= 702)
{
return (char)(n / 26 + 64) + "" + (char)(n % 26 + 64);
}
return string.Empty;
} |
Partager