Bonjour, j'ai exporté un datagridview a un fichier excel, je souhaite embellir ce tableau de la datagrid sur le fichier excel (bourdure et couleur d'entete); une idée svp ?
Bonjour, j'ai exporté un datagridview a un fichier excel, je souhaite embellir ce tableau de la datagrid sur le fichier excel (bourdure et couleur d'entete); une idée svp ?
Bonjour,
Comment tu as exporté ta datagrid vers Excel ? Interop ou bibliothèque tierce ?
Parce que si tu ne connais pas EEPlus, voici un exemple de ce que tu demandes :
Le contenu de la datatable dt est dans une .xlsx, à partir de la cellule A1, le tout dans un tableau qui alterne les lignes sur fond bleu pastelle ! Et sans avoir besoin d'excel...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DataTable dt; //on remplit dt ... ExcelPackage pck = new ExcelPackage(new FileInfo(xlsxFilePath);) ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Feuil1"); ws.Cells["A1"].LoadFromDataTable(dt, false, OfficeOpenXml.Table.TableStyles.Light20); pck.Save();
Bien sur on peut également rajouter du formatage manuel.
J@ck.
j'ai réussi à faire ce que je veux sauf que quand je veux ouvrir le fichier que je viens de créer ca ne marche pas, merci de m'aider :
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
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 private void ExporterToExcel() { Excel._Application excel = new Excel.Application(); Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing); Excel._Worksheet worksheet = null; try { worksheet = workbook.ActiveSheet; worksheet.Name = "EtatAOs_" + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year; worksheet.Rows.HorizontalAlignment = HorizontalAlignment.Center; int cellRowIndex = 1; int cellColumnIndex = 1; for (int i = 0; i < dgRésultatRecherche.Rows.Count - 1; i++) { for (int j = 0; j < dgRésultatRecherche.Columns.Count - 1; j++) { Excel.Range range1 = (Excel.Range)worksheet.Cells[1, cellColumnIndex]; Excel.Range range2 = (Excel.Range)worksheet.Cells[cellRowIndex + 1, cellColumnIndex]; worksheet.Cells[1, cellColumnIndex] = dgRésultatRecherche.Columns[j].HeaderText; DateTime myDate; if (!DateTime.TryParse(dgRésultatRecherche.Rows[i].Cells[j].Value.ToString(), out myDate)) { worksheet.Cells[cellRowIndex + 1, cellColumnIndex] = dgRésultatRecherche.Rows[i].Cells[j].Value.ToString(); } else worksheet.Cells[cellRowIndex + 1, cellColumnIndex] = myDate; range1.Interior.Color = System.Drawing.Color.LightBlue; range1.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; range1.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black); range2.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black); cellColumnIndex++; } cellColumnIndex = 1; cellRowIndex = cellRowIndex + 1; } worksheet.Cells.EntireColumn.AutoOutline(); SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; saveDialog.FilterIndex = 2; workbook.SaveAs(@"C:\ModelesRapports\" + worksheet.Name); OpenFileDialog openDialog = new OpenFileDialog(); openDialog.FileName = saveDialog.FileName; openDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; openDialog.FilterIndex = 1; if (openDialog.ShowDialog(this) == DialogResult.OK) { System.IO.StreamReader sr = new System.IO.StreamReader(openDialog.FileName); MessageBox.Show(sr.ReadToEnd()); sr.Close(); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } finally { excel.Quit(); workbook = null; excel = null; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 workbook.SaveAs(@"C:\ModelesRapports\" + worksheet.Name); OpenFileDialog openDialog = new OpenFileDialog(); openDialog.FileName = saveDialog.FileName; openDialog.Filter = "Excel Files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; openDialog.FilterIndex = 1; if (openDialog.ShowDialog(this) == DialogResult.OK) { System.IO.StreamReader sr = new System.IO.StreamReader(openDialog.FileName); MessageBox.Show(sr.ReadToEnd()); sr.Close(); }
Ok, donc c'est de l'interop.
De mon expérience, la seule justification de continuer à utiliser de l'interop c'est d'avoir un excel antérieur à 2007, qui ne sait pas ouvrir de l'OfficeOpenXML, d'ailleurs je crois qu'Excel 2007 ne plus ou ne sera bientôt plus maintenu... Enfin bref on va dire que tu as un vieux code spaghetti a améliorer...
C'est à dire ? tu n'as pas la mise en forme ? tu as une Exception ? le fichier n'est pas créé ? ...
le seul code que je vois qui concerne la mise en forme :
Comme ça je dirais que seul la 2ème ligne est fonctionnelle, puisque c'est la seule qui utilise une enum de Microsoft.Office.Interop.Excel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 range1.Interior.Color = System.Drawing.Color.LightBlue; range1.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; range1.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black); range2.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Black);
J'ai donc listé vite fait ce namespace et je trouve ... Microsoft.Office.Interop.Excel.XlRgbColor.PleinDeTrucQuiResembleADesCouleurs
A tester donc.
Bon code,
J@ck.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager