Reporting: DataTable naar Excel exporteren met opmaak

0000002948     -      21-10-2024

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



Functionele cookies: Cookies die nodig zijn voor het gebruik van de website en voorkeurscookies. Ze bevatten geen persoonsgegevens. (Meer informatie)

Analytische cookies: Verzamelen van statistieken met betrekking tot het gedrag van internetgebruikers. (Meer informatie)

Marketingcookies: Om bezoekers op verschillende websites te volgen voor advertentiedoeleinden. (Meer informatie)