“Make me the regional sales report from sales.csv” is een verzoek dat een taalmodel graag beantwoordt door een Markdown‑tabel te typen, een of twee getallen af te ronden en een grafiek te beschrijven die het niet kan tekenen. Met GroupDocs.Assembly.Mcp die lokaal draait (dnx GroupDocs.Assembly.Mcp --yes), geven Claude Desktop, Cursor of Copilot het gegevensbestand aan de engine: je Word‑ of PowerPoint‑sjabloon bevat de tabel, de totalen en een echte grafiek, en de server vult deze vanuit de CSV‑ of spreadsheet‑file zonder dat de cijfers ooit door het model gaan:
Bouw het regionale verkooprapport op uit sales.xlsx met sales-report.docx als PDF, en de grafiek‑slide met sales-chart.pptx.
De stap‑voor‑stap‑versie met configuratie en probleemoplossing staat in de documentatie: Hoe een rapport met tabellen en grafieken te bouwen vanuit een CSV‑ of spreadsheet‑bestand met een AI‑agent.
Waarom zouden de cijfers het model moeten overslaan?
Omdat een model een tekstgenerator is, en een rapport wiskunde plus lay‑out is. Wanneer een agent een CSV leest en het rapport zelf schrijft, wordt elke waarde opnieuw getypt door token‑voorspelling. De meeste komen goed uit. De ene die dat niet doet, is onzichtbaar totdat iemand het controleert tegen de bron, wat precies het werk is dat het rapport zou moeten besparen. Grafieken zijn nog erger: het model kan er één beschrijven, of code voor één genereren, maar de grafiek in je kwartaal‑presentatie is een object in een PowerPoint‑bestand, gestyled door iemand in marketing.
Dus verdeel het werk naar waar elke kant goed in is. Het sjabloon bepaalt hoe het rapport eruitziet. De engine leest het bestand en doet de tellingen. De agent kiest het sjabloon en de data, en vertelt je wat eruit is gekomen.
Wat de agent doorgeeft, en wat de engine ziet
Hier is de verdeling in één tabel:
de agent beslist de engine doet het sjabloon bezit
----------------------- ------------------------- -----------------------
welk sjabloon leest sales.xlsx/.csv de tabelindeling
welk gegevensbestand typt de kolommen de grafiek en de stijl
outputformaat (pdf) somt, sorteert, kiest max kopteksten, lettertypen, logo
vult tabelrijen, grafiek wat “totaal” betekent
Voor het genereren kan de agent eerst naar het gegevensbestand kijken. Voor onze spreadsheet rapporteerde de server één tabel met drie kolommen:
-> get_document_info {"file":{"filePath":"sales.xlsx"}}
<- { "dataKind": "table",
"data": { "tableCount": 1, "tables": [ { "number": 1,
"columns": [ "Region", "Quarter", "Revenue" ] } ] } }
Het tabelrapport
Het Word‑sjabloon heeft één tabelrij met <<foreach [r in sales]>> in de eerste cel en <</foreach>> in de laatste, plus twee regels eronder: <<[sales.Sum(r => r.Revenue)]>> en <<[sales.OrderByDescending(r => r.Revenue).First().Region]>>. Eén oproep:
-> assemble_document {"template":{"filePath":"sales-report.docx"},
"data":{"filePath":"sales.xlsx"},"format":"pdf"}
<- Assembled 'sales-report.docx' with 'sales.xlsx' (table 1 (3
column(s): Region, Quarter, Revenue) as 'sales') as PDF
Saved to: .../sales-report_assembled.pdf
Het rapport heeft vier rijen (North 182000, South 146500, East 98250, West 211900), “Total revenue: 638650 EUR” en “Best region: West”. De server noemde de data sales omdat dat is waar het sjabloon over itereren; niemand hoefde dat expliciet te zeggen. Hetzelfde sjabloon met sales.csv gaf dezelfde totalen; voor CSV dekken hasHeaders en csvDelimiter bestanden zonder koprij of met puntkomma’s.
De grafiek
Een grafiek in een GroupDocs.Assembly‑sjabloon is een gewone grafiek met tags op twee plaatsen. De grafiektitel leest Revenue by region<<foreach [r in sales]>><<x [r.Region]>>: loop over de rijen, één categorie per regio. De serienaam leest Revenue<<y [r.Revenue]>>: één waarde per rij. De tijdelijke gegevens in de grafiek staan er alleen zodat de ontwerper ze kan zien.
-> assemble_document {"template":{"filePath":"sales-chart.pptx"},
"data":{"filePath":"sales.xlsx"}}
<- Assembled 'sales-chart.pptx' with 'sales.xlsx' (table 1 (3
column(s): Region, Quarter, Revenue) as 'sales') as PPTX
Saved to: .../sales-chart_assembled.pptx
We openden het resultaat: een kolomgrafiek met de titel Revenue by region, categorieën North, South, East en West, waarden 182000, 146500, 98250 en 211900, waarbij de tags verdwenen zijn en de styling van het sjabloon behouden bleef. Dezelfde tags werken in Word‑ en Excel‑grafieken.
Waarom niet de agent om een grafiek‑afbeelding vragen?
Dat kan, en voor een eenmalig antwoord in chat is het prima. Voor een rapport heeft het drie problemen: de afbeelding is een plaatje, dus niemand kan erop klikken en een waarde controleren; de stijl is wat de plot‑code standaard gebruikt, niet jouw huisstijl; en de cijfers erop zijn via het model gegaan. Een sjabloongrafiek is een native grafiekobject, gevuld vanuit het bestand, eenmaal gestyled door degene die het sjabloon bezit.
Eerlijke beperkingen
- De tabel‑ en grafiektags moeten al in het sjabloon staan; de agent ontwerpt ze niet.
get_template_fieldstoont welke data het sjabloon leest. - Evaluatiemodus: elke output begint met “Evaluation Only. Created with GroupDocs.Assembly 26.7…”, en opgeslagen werkboeken krijgen een extra werkblad.
- Een lijst die leeg is in de data heeft geen kolomtypes, waardoor rekenkundige bewerkingen falen, zelfs met
allowMissingMembers. Controleer of het filter dat je vraagt rijen oplevert. - Presentatiesjablonen op Linux hebben
libgdiplusnodig wanneer ze viadnxworden uitgevoerd; de Docker‑image bevat dit. - Datums in gegevensbestanden: houd ze als datum of volledige ISO met tijd, en formatteer ze in het sjabloon.
FAQ
Kan een AI‑agent een grafiek maken van mijn CSV zonder deze te uploaden?
Ja. De server draait lokaal, leest de CSV of spreadsheet uit je opslagmap en schrijft het rapport daar; de cijfers gaan van het bestand naar het document zonder via het model te gaan.
Welke gegevensbestanden kan het sjabloon lezen?
JSON, XML, CSV en TSV, en een tabel binnen een spreadsheet, Word‑ of PowerPoint‑document; dataTable kiest de tabel wanneer er meerdere zijn.
Kan het rapport een Excel‑bestand zijn in plaats van een PDF?
Ja, gebruik een XLSX‑sjabloon; tags komen in werkbladcellen. In evaluatiemodus krijgt het opgeslagen werkboek een extra werkblad.
Dieper duiken
- Documentatie, canonieke handleiding: Hoe een rapport met tabellen en grafieken te bouwen vanuit een CSV‑ of spreadsheet‑bestand met een AI‑agent
- Documentatie‑hub: GroupDocs.Assembly MCP Server
- Begin hier: Laat het model de data invullen, niet het document schrijven
- Gerelateerd: Honderd gepersonaliseerde PDF’s uit één prompt: mail‑merge met een AI‑agent
- Gerelateerd: Wat heeft dit sjabloon nodig? Vraag het.
- Gerelateerd: Je repo bevat al de data; laat de agent de PDF maken
- On‑premise en beveiligingsmodel: 3 architecturen voor AI‑documentverwerking, en diegene die bestanden binnen je netwerk houdt
- Vragen: GroupDocs Assembly forum
- Bron: GroupDocs.Assembly.Mcp op GitHub