U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

DataTable naar Excel exporteren met opmaak

0000002948     -      12-10-2020

Deze code toont hoe, vooraleer de omzetting van een DataTable naar een Excel-bestand te doen, het formatteren van het Excel werkblad gebeurt (kleur, uitlijning, randen, ...). Aangezien de gebruikte kenmerken elk een zeer duidelijke naam hebben, is het niet nodig om vooraf te documenteren.

Zoom
DataSet ds = Api.Zselect(MercatorUi.Globals.RepData, "select s_id,s_modele,s_cle2,s_prix_ti,s_modif from STOCK ...");
if (ds == null)
    return;

ds.Tables[0].Columns["s_modele"].Caption = "Omschrijving";
ds.Tables[0].Columns["s_cle2"].Caption = "Barcode";

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");

 

Het bekomen resultaat is :

Opmerking : de eerste rij bevat steeds de namen van de kolommen in de DataTable (of het kenmerk Caption). Daarom is er een verschuiving van 1 tussen de nummers van de DataRows in de DataTable en de nummers van de rijen in het Excel-blad.

Nr rij Excel blad = Nr DataRow in de DataTable + 1