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
|
bool first = true;
Excel.Application excelApp = new Excel.Application();
excelApp.Workbooks.Add();
Excel._Worksheet workSheet = excelApp.ActiveSheet;
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 (MyStats s in listStats)
{
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.val);
}
int row = 0;
foreach (string pays in paysVilles.Keys)
{
++row;
workSheet.Cells[row, "A"] = pays;
int column = 2;
if (first)
{
foreach (string mois in paysMois[pays])
{
workSheet.Cells[1, intToColumn(column)] = mois;
++column;
}
workSheet.Cells[row, intToColumn(column)] = "Total";
first = false;
}
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;
}
SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
SaveFileDialog1.InitialDirectory = @"C:\";
SaveFileDialog1.Title = "Save text Files";
SaveFileDialog1.CheckFileExists = false;
SaveFileDialog1.CheckPathExists = false;
SaveFileDialog1.FileName = "Statistiques";
SaveFileDialog1.DefaultExt = ".xlsx";
SaveFileDialog1.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
SaveFileDialog1.FilterIndex = 1;
SaveFileDialog1.RestoreDirectory = true;
SaveFileDialog1.CreatePrompt = true;
if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
{
workSheet.SaveAs(Path.GetFullPath(SaveFileDialog1.FileName));
excelApp.Quit();
MessageBox.Show("Le fichier " + Path.GetFileName(SaveFileDialog1.FileName) + " a été enregistré dans " + Path.GetFullPath(SaveFileDialog1.FileName) + ".", Path.GetFileName(SaveFileDialog1.FileName), MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
} |