Bonjour,
Avant de vous exposer mon problème, je précise que je ne souhaite pas une solution de contournement (pilotage d'Excel, autre assemblage .NET, etc...).
J'ai tenté, en vain, d'utiliser l'assemblage .NET EPPlus dans un projet WinDev. (http://epplus.codeplex.com/)
Cet assemblage permet de manipuler (modifier, créer) des fichiers Excel au format OpenXML.
J'ai essayé de reproduire cet exemple C# en WLangage :
Code C# : 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 FileInfo newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); if (newFile.Exists) { newFile.Delete(); // ensures we create a new workbook newFile = new FileInfo(outputDir.FullName + @"\sample1.xlsx"); } using (ExcelPackage package = new ExcelPackage(newFile)) { // add a new worksheet to the empty workbook ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory"); //Add the headers worksheet.Cells[1, 1].Value = "ID"; worksheet.Cells[1, 2].Value = "Product"; worksheet.Cells[1, 3].Value = "Quantity"; worksheet.Cells[1, 4].Value = "Price"; worksheet.Cells[1, 5].Value = "Value"; //Add some items... worksheet.Cells["A2"].Value = 12001; worksheet.Cells["B2"].Value = "Nails"; worksheet.Cells["C2"].Value = 37; worksheet.Cells["D2"].Value = 3.99; worksheet.Cells["A3"].Value = 12002; worksheet.Cells["B3"].Value = "Hammer"; worksheet.Cells["C3"].Value = 5; worksheet.Cells["D3"].Value = 12.10; worksheet.Cells["A4"].Value = 12003; worksheet.Cells["B4"].Value = "Saw"; worksheet.Cells["C4"].Value = 12; worksheet.Cells["D4"].Value = 15.37; //Create an autofilter for the range worksheet.Cells["A1:E4"].AutoFilter = true; worksheet.Cells.AutoFitColumns(0); //Autofit columns for all cells // Change the sheet view to show it in page layout mode worksheet.View.PageLayoutView = true; // save our new workbook and we are done! package.Save(); }
J'ai donc fait ceci dans WinDev :
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 LOCAL clFichier est un FileInfo ("c:\epplus_test.xlsx") clXlsPack est un ExcelPackage(clFichier) pclXlsFeuille est un ExcelWorksheet dynamique pclXlsFeuille = clXlsPack.Workbook.Worksheets.Add("Inventory") //Add the headers pclXlsFeuille.Cells[1, 1].Value = "ID" pclXlsFeuille.Cells[1, 2].Value = "Product" pclXlsFeuille.Cells[1, 3].Value = "Quantity" pclXlsFeuille.Cells[1, 4].Value = "Price" pclXlsFeuille.Cells[1, 5].Value = "Value" //Add some items... pclXlsFeuille.Cells["A2"].Value = 12001 pclXlsFeuille.Cells["B2"].Value = "Nails" pclXlsFeuille.Cells["C2"].Value = 37 pclXlsFeuille.Cells["D2"].Value = 3.99 pclXlsFeuille.Cells["A3"].Value = 12002 pclXlsFeuille.Cells["B3"].Value = "Hammer" pclXlsFeuille.Cells["C3"].Value = 5 pclXlsFeuille.Cells["D3"].Value = 12.10 pclXlsFeuille.Cells["A4"].Value = 12003 pclXlsFeuille.Cells["B4"].Value = "Saw" pclXlsFeuille.Cells["C4"].Value = 12 pclXlsFeuille.Cells["D4"].Value = 15.37 //Create an autofilter for the range pclXlsFeuille.Cells["A1:E4"].AutoFilter = Vrai pclXlsFeuille.Cells.AutoFitColumns(0) //Autofit columns for all cells // Change the sheet view to show it in page layout mode pclXlsFeuille.View.PageLayoutView = Vrai // save our new workbook and we are done! clXlsPack.Save()
Le problème c'est que j'ai l'erreur de compilation suivante sur chaque ligne où j'affecte une valeur au membre Cells de pclXlsFeuille :
Erreur :Le membre 'Cells' de la classe 'ExcelWorksheet' est constant : il n'est donc accessible qu'en lecture hors des méthodes de la classe 'ExcelWorksheet'.
Aurais-je commis une erreur ?
Est-ce que quelqu'un aurait une solution, s'il vous plaît ?
Merci.
Partager