04. september 2008 - 01:42Der er
8 kommentarer og 1 løsning
word2007 og excel2007 "automatisering" vha. C#
Hej Eksperter.
For at gøre en lang historie kort, så skal jeg vha. C# kunne oprette et word2007 dokument og smide forskellig data ind i og derefter smide et diagram/graf (excel2007) ind i det word dokument.
I word2003 kunne man jo lave en makro og se et OLE metodekald:
Hvis det kun er OOXml dokumenter du skal lege med, så vil jeg helt sikkert foreslå dig, at glemme alt om Word automation og så bruge den managed DocumentFormat.OpenXml komponent. Måske tager det lidt tid at komme ind i selve api'et, men når først du er i gang, så kan du trylle og det er på en tiendedel af tiden, i forhold til automation.
tak bvli, du har hjulpet mig på rette spor, men har aldrig sat mig ind i OOXml strukturen og er heller ikke den mest erfarne med Xml.
Jeg har dog læst op på nogle artikler og begyndt at få mere styr på syntaksen og selve strukturen.
meeeeen, nu har jeg et 2 siders word-dokument, som ligesom skal være en form for template for de rapporter systemet skal generere.
Mit spørgsmål er så, hvordan laver jeg "reference-punkter" i mit Word dokument, som jeg så nemt kan erstatte med tekst fra min C# applikation.
Har prøvet med noget søg/erstat, hvor jeg simpelthen smed nogle referencer-tekster ind i Word-dokumentet:
"##Fornavn## ##Efternavn##", som jeg så bagefter kunne erstatte med mine variabler, men det er måske den nemmeste metode, men bestemt ikke den smukkeste (da den jo er lidt grim og efter nogle redigeringer af "templaten" har word smidt så mange fyld Xml-tags ind imellem at ordene ikke længere er et ord!! heh)?
Den letteste måde at gøre det på, er at indsætte et "custom xml" tag i din skabelon. Derefter søger du på den og smækker dine <r> og dine <t> (runnings og text) ind i dem.
En anden måde er at bruge almindelige flettefelter, check hvordan disse ser ud, og så lave en replace på disse.
Jeg har eksempler på begge dele, men desværre ikke lige her. Sig gerne til, hvis det er.
Hej igen igen.... Har lavet en test hvor jeg først tager min "template" og kopierer den til en ny fil og vil derefter ændre den. Udfra min sparsomme viden (tager jo tid at læse og forstå alt om XML i alle sammenhæng), så burde dette virke. Jeg får dog en fejl der siger "Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.", men kan mærke at jeg er MEGET tæt på, eftersom at XMLSpy rent faktisk kan hive det ud, som jeg vil.... Ved godt at din løsning er lidt anderledes, men prøvede denne, også bare for at opnå større forståelse for OOXML og XML. Dette er dog et meget banalt eksempelt, men alle kommentarer til koden er velkommen :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.