EPPlus, comment utiliser cet assemblage .NET pour manipuler des fichiers Excel ?
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:
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:
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.