Bonjour,
J'ai développé une application qui via un formulaire client extrait de l'information d'une base MySql pour l'exporter dans un fichier Excel.
Je bloque sur l’utilisation des object[,] pour exporter plus rapidement dans excel mes données. En effet celles ci ne s'exportent pas dans un format exploitable par excel (ex : les double sont exportés en string et du coup impossible de faire un graphe sur ces données )
Quand j'utilisais des data table (écriture cellule par cellule), j'arrivais à obtenir le bon format en convertissant ma data en double. Le problème est que compte tenue du nombre de tableaux et de leurs tailles c'est beaucoup trop long. C'est la raison pour laquelle j'essaye maintenant d'utiliser les array.
Voici mon code :
Mon ancien code (fonctionnant avec des datatable)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 deb = 1; object[,] arr_model = new object[ModelTableFinal.Rows.Count, ModelTableFinal.Columns.Count]; for (int r = 0; r < ModelTableFinal.Rows.Count; r++) { DataRow dr = ModelTableFinal.Rows[r]; for (int c = 0; c < ModelTableFinal.Columns.Count; c++) arr_model[r, c] = dr[c]; } Excel.Range c1 = (Excel.Range)oSheet.Cells[8, deb]; Excel.Range c2 = (Excel.Range)oSheet.Cells[8 + ModelTableFinal.Rows.Count - 1, deb + ModelTableFinal.Columns.Count-1]; Excel.Range range = oSheet.get_Range(c1, c2); range.Value = arr_model;
Je pourrais très bien utilisé un tableau de double double[,] mais il se peut que je mélange plusieurs format dans un même tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 n = ModelTableFinal.Columns.Count; for (int i = 0; i < n; i++) { oSheet.Cells[8, deb + i] = ModelTableFinal.Columns[i].ColumnName.ToString(); int j = 0; if(coltoconvert.ContainsKey(ModelTableFinal.Columns[i].ColumnName.ToString()) == false) { foreach (DataRow currow in ModelTableFinal.Rows) { oSheet.Cells[9 + j, deb + i] = currow[i].ToString(); j++; } } else { foreach (DataRow currow in ModelTableFinal.Rows) { if (currow[i] != DBNull.Value) oSheet.Cells[9 + j, deb + i] = Convert.ToDouble(currow[i]); j++; } } }
Y a t-il possibilité d'avoir un format par colonnes ?
Merci d'avance
Partager