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
| IDictionary<string, List<string>> paysVilles = new Dictionary<string, List<string>>();
IDictionary<string, List<string>> paysMois = new Dictionary<string, List<string>>();
IDictionary<KeyValuePair<string, string>, int> villesMoisVal = new Dictionary<KeyValuePair<string, string>, int>();
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);
if(!villesMoisVal.Keys.Contains(new KeyValuePair<string, string>(c.ville, c.mois)))
villesMoisVal.Add(new KeyValuePair<string, string>(c.ville, c.mois), c.valM);
}
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;
}
workSheet.Cells[row, intToColumn(column)] = "Total";
foreach(string ville in paysVilles[pays])
{
++row;
workSheet.Cells[row, "A"] = ville;
column = 2;
int total = 0;
foreach(string mois in paysMois[pays])
{
workSheet.Cells[row, intToColumn(column)] = villesMoisVal[new KeyValuePair<string, string>(ville, mois)];
total += villesMoisVal[new KeyValuePair<string, string>(ville, mois)];
++column;
}
workSheet.Cells[row, intToColumn(column)] = total;
}
++row;
workSheet.Cells[row, "A"] = "Total";
for (int i = 2; i <= paysMois[pays].Count + 2; ++i)
{
int total = 0;
for (int j = row - paysVilles[pays].Count; j < row; ++j)
{
Excel.Range range = workSheet.Cells[j, intToColumn(i)];
total += range.Value;
}
workSheet.Cells[row, intToColumn(i)] = total;
}
++row;
} |
Partager