Ce code montre comment, avant de procéder à la conversion d'une DataTable vers un fichier Excel, procéder au formatage de la feuille Excel (couleurs, alignements, bordures, ...) Les propriétés utilisées ayant chacune un nom très explicite, il n'est pas nécessaire de les documenter davantage.
DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select s_id,s_modele,s_cle2,s_prix_ti from STOCK ...");
if (ds == null)
return;
ds.Tables[0].Columns["s_modele"].Caption = "Désignation";
ds.Tables[0].Columns["s_cle2"].Caption = "Code-barres";
MercatorExporter.ExcelFormatters.Formatters formatters = new MercatorExporter.ExcelFormatters.Formatters();
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionRow(3),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { BackgroundColor = System.Drawing.Color.Yellow , FontItalic = true}
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionColumn(2),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { BackgroundColor = System.Drawing.Color.LightBlue, ColumnWidth = 120, HorizontalAlignment = MercatorExporter.ExcelFormatters.HorizontalAlignmentStyle.Right }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionCell(1, 6),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { BackgroundColor = System.Drawing.Color.Orange, UnderlineStyle = MercatorExporter.ExcelFormatters.UnderlineStyle.Double }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionCell(2, 6),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { BackgroundColor = System.Drawing.Color.Orange, UnderlineStyle = MercatorExporter.ExcelFormatters.UnderlineStyle.Single }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionColumn(3),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { Borders = new MercatorExporter.ExcelFormatters.BordersDescriptor(MercatorExporter.ExcelFormatters.MultipleBorders.Left | MercatorExporter.ExcelFormatters.MultipleBorders.Right, System.Drawing.Color.Red, MercatorExporter.ExcelFormatters.LineStyle.Thick) }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionRow(0),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { FontBold = true, RowHeight = 100, VerticalAlignment = MercatorExporter.ExcelFormatters.VerticalAlignmentStyle.Center }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionColumn(1),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { ColumnAutoFit = true }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionCell(1, 4),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { FontColor = System.Drawing.Color.Red }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionColumn(3),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { NumberFormat = "### ### ### ##0.00", ColumnWidth = 75, HorizontalAlignment = MercatorExporter.ExcelFormatters.HorizontalAlignmentStyle.Right }
));
formatters.Add(new MercatorExporter.ExcelFormatters.Formmatter(
MercatorExporter.ExcelFormatters.CellsCollection.NewCellsCollectionColumn(4),
new MercatorExporter.ExcelFormatters.FormatterDescriptor { NumberFormat = "dd/MM/yyyy", ColumnWidth = 75, HorizontalAlignment = MercatorExporter.ExcelFormatters.HorizontalAlignmentStyle.Center }
));
ds.Tables[0].ExtendedProperties.Add("ExcelFormatters", formatters);
MercatorExporter.Exporter.Export(ds.Tables[0], MercatorExporter.ExporterFormats.Excel, @"c:\test\TestFormatters.xlsx");
Le résultat obtenu est le suivant :

Remarque : la première ligne contient toujours le nom des colonnes dans la DataTable (ou la propriété Caption). Dès lors, il y a un décalage de 1 entre les numéros de DataRows dans la DataTable et les numéros de lignes dans la feuille Excel.
N° ligne feuille Excel = n° DataRow dans la DataTable + 1