Het Excel bestandsformaat
Pagina's in dit artikel
Eigenschappen van besturingselementen van de formulieren werkset aanpassen
Omdat ik nieuwsgierig was naar de manier waarop Formulier controls in het Excel OpenXML bestandsformaat zijn opgenomen ben ik daar eens naar op zoek gegaan.
Demo bestand
Ik heb een klein bestandje gemaakt, met het volgende op Sheet1:
Demo bestand met een paar Formulier besturingselementen
Waar zijn de Formulierbesturingselementen opgeslagen
Als je het xlsx bestand hernoemd naar ...xlsx.zip, dan kan je het zip pakket openen en erin rondneuzen. Open de map xl en vervolgens de map Worksheets. Open sheet1.xml. Bijna onderaan dat bestandje vind je deze informatie:
Onderste deel van sheet1.xml, met de verwijzing naar de formulier
besturingselementen geselecteerd.
Om te zien waarnaar rId2 verwijst moet je de _rels map openen:
Venster van geopende zip container met in beeld de map worksheets\_rels
Open het bestand sheet1.xml.rels en zoek naar rId2:
Het relevante deel in bestand sheet1xml.rels
Nu weet je dus dat we het volgende bestand op moeten zoeken: ..\xl\drawings\vmlDrawing1.vml.
VML bestanden
Voor ieder werkblad met formulier besturingselementen erop zal de zip container één vml bestand bevatten.
VML wordt beschreven als:
"Vector Markup Language (VML) is an XML-based exchange, editing and delivery format for high-quality vector graphics. VML facilitates the exchange and subsequent editing of vector graphics between a wide variety of productivity and design applications. VML is based on XML 1.0, which is an open, simple, text-based language for describing structured data. "
Formulier besturingselementen in een VML bestand.
Sleep het vml bestand vanuit verkenner naar de desktop en open de vml file vanaf je desktop.
Als je dit probeert met Internet explorer (omdat je de syntax kleuring en inspring opties van IE handig vindt), dan wacht je een onaangename verrassing: IE vraagt je of je het bestand wilt downloaden of opslaan. Dit sleept je in een oneindige lus, tenzij je voor annuleren kiest. Gelukkig is er een tool zoals "XML notepad" (gratis download), waarmee je de xml op verschillende manieren kan laten weergeven. Hier is die tool die het gedeelte toont van de checkbox:
XML Notepad toont het (geformatteerde) xml gedeelte van een checkbox van
de formulieren set op een Excel blad.
Hé! wat doet die font node daar? Meer dan 10 jaar al vertel ik mensen, dat je het lettertype van een checkbox van de formulieren besturingselementen niet kan veranderen. Kan het dan toch? Gewoon proberen!
Het lettertype van een checkbox veranderen (van de formulieren besturingselementen)
Opmerking (2013-01-15): Het lijkt er op, dat het gedrag van Excel is veranderd. Als je Excel 2010 gebruikt om een bestand te openen dat middels onderstaande truc is aangepast, dan wordt het lettertype van de checkbox niet langer beinvloed (wat eigenlijk wel logisch is, want je kon dit al niet aanpassen via de gebruikersinterface).
Schakel om naar de treeview tab van XML notepad (indien je die tool gebruikt) en bewerk de elementen "font face" en "size". Ik maakte er dit van:
<font face="Arial Black" size="320" .....
Laten we eens kijken wat dit met ons bestand heeft gedaan. Volg deze stappen:
- Sla het vml bestand op en sluit de editor;
- Sleep het vml bestand van je desktop (ik ga ervan uit dat je het vml bestand eerst uit de zip container hebt gesleept!!) naar de "Drawings" map in de xlsx.zip container en bevestig dat je de reeds aanwezige versie wilt vervangen;
- Sluit het verkenner venster van de zip container en hernoem het bestand terug van xlsx.zip naar xlsx;
- Open het bestand in Excel.
Verrassing! De checkbox ziet er nu zo uit:
Forms checkbox in Excel met aangepast lettertype
Laten we ons geluk eens proberen. Sla het bestand op als bestandstype Excel 97-2003. Probeer nu het bestand te openen in één van die Excel versies (Ik probeerde 2003). Gek genoeg werkt het nog ook!
De positie van een control veranderen
De positie van een control wordt bepaald door de "Anchor" node in de nodes die bij het control horen:
XML uit het bestand vmlDrawing1.vml met de sectie betreffende afmetingen
en positie geaccentueerd
Wat betekent dit? De eerste twee getallen geven aan waar de linker bovenhoek van het element zich bevindt op de horizontale as: de kolom (startend vanaf 0) en de verschuiving vanaf links ten opzichte van die kolom. De volgende twee getallen vertegenwoordigen het rijnummer (wederom startend met 0) en de verschuiving naar beneden (in pixels) vanaf de bovenkant van de rij. De volgende vier getallen doen hetzelfde voor de linker-benedenhoek.
Met andere woorden, in de xml code hierboven is de linkerbovenhoek van het besturingselement kolom E (de 1e 4 in de code), rij 3 (de eerste 2 in de code). Het element is 29 pixels (eerste 29 in de code) naar rechts verschoven en 0 (de eerste nul in de code) omlaag. De rechteronder hoek is cel I4, met een verschuiving naar rechts van 38 pixels en omlaag van 18, relatief ten opzichte van de linkerboven hoek van die cel.
Nou, dat is het dan. Ik hoop je een startpunt gegeven te hebben over hoe je met het nieuwe Excel 2007 Open XML bestandsformaat kunt werken.
Download
Je kan het bestand uit dit artikel hieronder downloaden:
Vragen, suggesties of opmerkingen