Wordmdl¶
Il documento contiene: * Configurazioni lato gestionale * Configurazioni lato macro xml2doc * Funzionamento di base * Formattazione Celle delle tabelle * Inclusione di Immagini * Inclusione di File * Inclusione di Simboli * Casi Particolari
Wordmdl - Configurazione¶
Parametri di Configurazione su wordmdl Lato Gestionale.
| Gruppo | Parametro | Valori | Descrizione |
|---|---|---|---|
| ARC-OTT | PATH-APRI-FILE | path (formato client) | Percorso in cui verrà copiato il modello da generare, i file xml di dati e la macro di generazione |
| STAMPE | PERIFERICA-STAMPA-FILE | codice periferica | tra i parametri in input di WORDMDL c'è il codice di periferica per il quale generare, se questa è una periferica di tipo "MAIL"; in tal caso devo simulare l'invio su questa periferica configurata per avere il file di stampa che permetta la trasformazione del documento in TIF/PDF |
| STAMPE | PATH-STAMPA-FILE | path (formato client) | serve in due casi: a) Se e' stato richiesta la stampa sulla periferica configurata per l'esportazione, prima di eseguirla cancello il file di output che mi aspetto, se esso esiste b) se e' stato richiesto l'invio via MAIL trasformo il file generato in allegato e lancio il programma di invio posta |
| WORDMDL | BACKGROUND-DEFAULT | S/N | Attiva o disattiva la modalità operativa di Word: in background (minimizzato) o non in background: su Word 2007/2010 è stato evidenziato che la generazione in barckground di documenti consecutivi creava problemi, quindi è consigliato usatre la modalità NON non in background |
| WORDMDL | modo-creazione-pdf | W/S | Modalità di generazione del PDF per gli allegati EMAIL: S=via Sview: word crea un file di stampa.pcl tramite la stampa verso una opportuna periferica che genera il file e poi viene lanciato Sview per la conversione W=Word, fa tutto Word, modalità disponibilie solo per versioni uguali o superiori a Word2010 Questa modalità è comunicata a Word sul file di informazioni (xml2doc_info.txt) semplicemente indicando nel parametro "saveAs=" un file ".pdf" |
| WORDMDL | debug | S/N | Attiva o no la creazione del logo di debug sulla macro scrivendo la riga debug= sul file di informazioni |
Parametri di Configurazione su wordmdl Lato Macro XML2DOC.doc sono i valori possibli passati nel file xml2doc_info.txt.
| Parametro | Valore | Default | Descrizione | Esempio |
|---|---|---|---|---|
| riga 1 | fullpath (formato client)[;n] | parametro obbligatorio path in cui trovo i file .xml di dati poi se è presente un “;” (opzionale) seguito da numeri interi viene indicato il numero di documenti, generati dal modello, che saranno stampati |
c:\ecoge\tmp\test\origine_0001.xml;0001 | |
| riga 2 | fullpath (formato client) | parametro obbligatorio path in cui trovo il documento "origine.doc" in cui generare |
c:\ecoge\tmp\test\origine.doc | |
| bkground= | "N"/"S" | "N" | ||
| PrintTo= | Nome stampante presente sul sistema operativo client | "" | ||
| exit= | "S"/"N" | "N" | Indica se uscire o no da Word al termine dell'elaborazione | |
| saveAs= | Path (formato client) | file su cui salvare il documento prodotto da Word, se il file ha estensione .PDF e la versione di Word è compatibile allora viene prodotto un pdf | ||
| copie= | "numero" | "1" | numero di copie in formato stringa: "1", "2",...ecc. | copie="009” |
| eliminaVuote= | "S"/"N" | "N" | Elimino le righe vuote/pagine vuote a fine documento? [Usato per stampe FATA] | |
| cartellaImmagini= | path cartella (formato client) | path di avvio del documento di macro | E' il percorso della cartella dove vengono cercate le immagini da inserire nel documento indicate sul file di dati tramite i tag: nel testo: <IMAGE:fullpath_nomefile.ext> in tabella: "@image@=shortname_imagefile" |
|
| cartellaEFile= | path cartella (formato client) | path di avvio del documento di macro | E' il percorso della cartella dove vengono cercati i file da inserire nel documento indicati sul file di dati tramite i tag: nel testo: a. <EMBEDDEDFILE:fullpath_nomefile.ext> b. <EMBEDDEDASICON:fullpath_nomefile.ext> in tabella: a. "@embeddedfile@=shortname_file" b. "@embeddedasicon@=shortname_file" |
|
| debug= | "S"/"N" | "N" | modalità debug? Se vale "S"nella cartella di elaborazione della macro viene creato un file di log avente nome: ggmmaaaa_hhmmss_xml2doc_log.txt dove ggmmaaaa\=data di sistema dove hhmss\=ora di sistema |
|
Esempio 1 c:\ecoge\tmp\origine0001.xml;3 c:\ecoge\tmp\origine.doc saveAs="c:\ecoge\tmp-test\adasdasd.doc" PrintTo="Kyocera FS-2000D KX" exit="S” copie="009” bkground=”S” eliminaVuote=”S” Nella prima riga (obbligatoria) si indica il file xml contenente i dati se è presente un “;” (opzionale) seguito da numeri interi viene indicato il numero di documenti, generati dal modello, che saranno stampati. La seconda riga (obbligatoria) indica il modello di word in formato .doc. La terza, la quarta, la quinta e la sesta riga riga possono contenere opzionalmente e senza ordine particolare i seguenti parametri: saveAs = “eventuale percorso dove salvare il file doc” PrintTo = “nome della stampante su cui indirizzare l’output” exit = “S” o “N” uscita e chiusura dell’applicazione Word dopo l’esecuzione della macro copie = “002” numero di copie (in questo caso due) bkground=”S “ (se non è presente si presume che l’applicazione sia visibile) eliminaVuote=”S “ (per togliere eventuali righe vuote nelle tabelle e pagine vuote alla fine del documento [per stampe FATA]) Esempio 2 c:\ecoge\tmp\origine0001.xml c:\ecoge\tmp\origine.doc In questo caso verrà elaborato un documento senza generare la stampa.
Manuale originale (in via di sistemazione)¶
Manuale originale (in via di sistemazione)¶
Documento per specifiche su “xmltodoc.doc”. Informazioni Generali Esportazione dal gestionale di dati destinati ad alimentare documenti di word (n.d.r. nel presente manuale verranno definiti modelli ma da un punto di vista formale sono a tutti gli effetti documenti .doc o .docx di word NON modelli .dot o .dotx) opportunamente trattati. Funzionamento di base Il flusso di processo è il seguente: * un programma gestionale prepara i dati da mandare alla produzione del documento * esempi standard: cogv92m, cogo25m; * esempio con file di dati multipli: cogz82m che a sua volta chiama cogzs9 * chiama wordmdl con operazione APRI-XML e passandogli i parametri:
| Parametro | Descrizione | Esempio |
|---|---|---|
| wordmdl-ope | APRI-XML | |
| wordmdl-modello | fullpath cartella modelli o fullpath file modello | move ext-mod-dir to wordmdl-modello |
| wordmdl-modello-loc | location del -modello passato C=client,S=Server(default=S) | move "S" to wordmdl-modello-loc |
| wordmdl-info | fullpath (formato server) del nome file di informazioni. Il file di informazioni in molti programmi in questa fase non è nominato come .xml di solito ma come .txt, si occuperà poi wordmdl di cambiare l'estensione come .xml ed aggiungere il numero di occurrence al nome. | move w-nome-xmldoc to wordmdl-info |
| wordmdl-file-occ | n° di occurence del file di informazioni (nel caso siano più di uno) | move w-dc-file-occ to wordmdl-file-occ |
| wordmdl-attendi-esito | richiede che wordmdl attenda l'esito della creazione del file di info | move "S" to wordmdl-attendi-esito |
-
- chiama ripetutamente wordmdl.cob con operazione AGGIUNGI-XML per fargli creare il/i file di dati (es. origine_nnnn.xml) passandogli i tag ed i dati da inserire nel tag
| Parametro | Descrizione | Esempio |
|---|---|---|
| wordmdl-ope | AGGIUNGI-XML | |
| wordmdl-tag | nome del tag da valorizzare | move "TOT-IVATO" to wordmdl-tag |
| wordmdl-tag-idx | Indice del tag (attualmente non usato) | move 0 to wordmdl-tag-idx |
| wordmdl-dato | Valore dell'informazione da aggiungere al tag | move u10-edit to wordmdl-dato |
| wordmdl-fl-tag | Modalita' di gestione del tag: " "= Default: il tag viene aperto e chiuso con la info all'interno "A"= Eseguo solo l'apertura del tag "D"= Accodo un pezzo di informazione alla info: da usare se si sta scrivendo una riga di tabella, e si vuole comporre la info direttamente con WORDMDL In tal caso si dovra' richiamare "n" volte AGGIUNGI-XML, cambiando opportunamente FL-TAG in questo modo: "A": Apro il tag e inizializzo la info "D": Tante volte quante sono le colonne "I": Chiudo la info con "C": Chiudo il tag "I"= Scrivo solo la info "C"= Eseguo solo la chiusura del tag |
move " " to wordmdl-fl-tag esempi di gestione della tabella sono presenti in cogv92m riportati in questa sezione qui sotto |
| wordmdl-attendi-esito | richiede che wordmdl attenda l'esito della creazione del file di info | move "S" to wordmdl-attendi-esito |
-
- chiama wordmdl per chiudere il file xml con operazione CHIUDI-XML o per lanciare l'esecuzione tramite la ESEGUI della macro (che implica la chiusura dell'xml)
| Parametro | Descrizione | Esempio |
|---|---|---|
| wordmdl-ope | CHIUDI-XML | |
| wordmdl-tag | ||
| wordmdl-tag-idx | move 0 to wordmdl-tag-idx | |
| wordmdl-dato | move u10-edit to wordmdl-dato | |
| wordmdl-fl-tag | Modalita' di gestione del tag: " "= Default: il tag viene aperto e chiuso con la info all'interno "A"= Eseguo solo l'apertura del tag "D"= Accodo un pezzo di informazione alla info: da usare se si sta scrivendo una riga di tabella, e si vuole comporre la info direttamente con WORDMDL In tal caso si dovra' richiamare "n" volte AGGIUNGI-XML, cambiando opportunamente FL-TAG in questo modo: "A": Apro il tag e inizializzo la info "D": Tante volte quante sono le colonne "I": Chiudo la info con "C": Chiudo il tag "I"= Scrivo solo la info "C"= Eseguo solo la chiusura del tag |
move " " to wordmdl-fl-tag esempi di gestione della tabella sono presenti in cogv92m riportati in questa sezione qui sotto |
| wordmdl-attendi-esito | richiede che wordmdl attenda l'esito della creazione del file di info | move "S" to wordmdl-attendi-esito |
Esempio AGGIUNGI-XML per tabella. *--------------------------------------------------------------- * Ora ogni riga del file di transito diventa una riga di tabella * NB: per ora do' per scontato che la riga di capitolato abbia un * formato fisso *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move w-xml-info to wordmdl-dato move w-xml-dato-size to wordmdl-dato-size move w-dc-file-occ to wordmdl-file-occ move "A" to wordmdl-fl-tag call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * Voce *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag if t-det-voce <> a-voce move t-det-voce to wordmdl-dato move t-det-voce to a-voce end-if call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * Descrizione *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag move t-det-des to wordmdl-dato move "S" to wordmdl-converti-crlf call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * UM *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag move t-det-um to wordmdl-dato call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * Quantita' *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag move t-det-qta to zeta7v3 move zeta7v3 to wordmdl-dato move 11 to wordmdl-dato-size call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * Prezzo *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag if t-det-pre = 0 move " " to wordmdl-dato else initialize util-u10 move "Edita" to u10-ope perform z-u10-t-det-pre move u10-edit to wordmdl-dato end-if move 11 to wordmdl-dato-size call "WORDMDL" using stringhe util-wordmdl *--------------------------------------------------------------- * Importo voce *--------------------------------------------------------------- initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "D" to wordmdl-fl-tag initialize util-u10 move "Edita" to u10-ope perform z-u10-t-det-imp move u10-edit to wordmdl-dato move 11 to wordmdl-dato-size call "WORDMDL" using stringhe util-wordmdl add t-det-imp to a-tot-raggr initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "I" to wordmdl-fl-tag call "WORDMDL" using stringhe util-wordmdl initialize util-wordmdl move "Aggiungi-XML" to wordmdl-ope move "TAB-CAPITOLATO" to wordmdl-tag move 0 to wordmdl-tag-idx move "C" to wordmdl-fl-tag call "WORDMDL" using stringhe util-wordmdl
- terminata la preparazione dei dati il programma gestionale E’ possibile dal gestionale esportare dati che possono essere accolti in modelli di word. La procedura appoggia sui seguenti file:
- file di testo contenente le informazioni;
- file con estensione xml in cui sono contenuti i dati;
- modello di word (formato .doc);
- file di word contente la macro vba (xmltodoc.doc).
il nome del file di testo contenente le informazioni comprende il nome del file word con la macro + “_info” secondo le convenzioni da noi adottate: “xmltodoc_info.txt”.
alcuni esempi validi di contenuto del file:
I file xml contenenti i dati “devono” avere la seguente forma:
Esempio 3
WIL123123 Prova Ragione Sociale Indirizzo del cliente Roma 1234111 12-12-2009 COMM12121212 @fondi;a) contratto a distanza: il contratto avente per oggetto beni o servizi stipulato tra un fornitore e un consumatore nell'ambito di un sistema di vendita o di prestazione di servizi a distanza organizzato dal fornitore che, per tale contratto, impiega esclusivamente una XXXXX merce numeroo più tecniche di comunicazione a distanza fino alla conclusione del contratto, compresa la conclusione del contratto stesso uno;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90 XXXXX merce numerodue;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90 XXXXX merce numero tre;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90XXXXX merce numero quattro;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90 Il contenuto racchiuso fra i tag <_> </_> è quello che sarà copiato nel documento modello. Se il contenuto è nullo occorre indicare una riga vuota fra il tag di apertura e quello di chiusura. Nel caso ci fosse una tabella da popolare il tag deve iniziare con <TAB vedi “esempio 4” Nell’esempio si può vedere che il contenuto della tabella è definito in righe che terminano obbligatoriamente con o . Ogni riga racchiude il contenuto dei “campi” ed il contenuto del campo è separto dal delimitatore “;”. Se il campo contiene il tag verrà aggiunto un ritorno a capo all’interno del medesimo. Esiste l’eccezione della riga che contiene un solo valore significativo e che inizia con @fondi. Questa linea viene integrata nella tabella in un sola cella (fusione delle celle). Il documento modello dovrà contenere i tag presenti nell’archivio XML come nell’esempio 5:
| PREVENTIVO N. |
Rifer. |
|
|---|---|---|
| CODICE E DESCRIZIONE MERCE |
QU.TA' | IMP.UNIT. |
Restiamo a Vs. disposizione per informazioni e chiarimenti in merito e cogliamo l'occasione per porgerVi i migliori saluti. WILOCS Fine esempio 5 La macro contenuta in “xmltodoc.doc” farà da smistatrice dei dati dall’archivio xml al modello word. In pratica si otterrà alla fine un documento come il seguente esempio 6: WILOCS LOGO TEST SRL Spett.le (WIL123123) Prova Ragione Sociale Indirizzo del cliente Roma
| PREVENTIVO N. 1234111 DEL 12-12-2009 | Rifer. COMM12121212 |
|
|---|---|---|
| CODICE E DESCRIZIONE MERCE |
QU.TA' | IMP.UNIT. |
| a) contratto a distanza: il contratto avente per oggetto beni o servizi stipulato tra un fornitore e un consumatore nell'ambito di un sistema di vendita o di prestazione di servizi a distanza organizzato dal fornitore che, per tale contratto, impiega esclusivamente una o più tecniche di comunicazione a distanza fino alla conclusione del contratto, compresa la conclusione del contratto stesso |
|---|
| XXXXX merce numero uno |
| XXXXX merce numero due |
| XXXXX merce numero tre |
| XXXXX merce numero quattro |
Restiamo a Vs. disposizione per informazioni e chiarimenti in merito e cogliamo l'occasione per porgerVi i migliori saluti.
WILOCS
Note: come si evince dall’esempio è possibile includere, nelle posizioni che si ritengono più opportune, file immagini o loghi per personalizzare il modello semplicemente aggiungendo il tag
Font2¶
Font3¶
#Font4 #Font5 La macro processerà tutte quelle celle il cui contenuto iniziale (prefisso) è eguale a #Font1: , #Font2: , #Font3: ecc. in tal modo le celle saranno formattate secondo lo stile dei vari font. Esempio di contenuto tabella con font:
font1:XXXXX merce numero uno;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90¶
font1:XXXXX merce numero due;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90¶
font1:XXXXX merce numero tre;12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90¶
font1:XXXXX merce numero quattro; #font2:12;123,89;14.567.890,00;1.345.678,99;1.456.456.300,90¶
Aggiunto il 7 ottobre 2011 * nel file check.txt prodotto alla fine della esecuzione della macro è stata aggiunta una seconda riga in cui viene indicato il numero di pagine del documento generato dalla macro Inclusione immagini Usando la sintassi:Usando la <IMAGE:fullpath_nomefile.ext> La macro includerà il file immagine indicato (deve essere in formato client). NB: è conveniente introdurre il comando all'interno di una casella di testo, in questo modo l'immagine dovrebbe risultare ridimensionata all'interno della casella di testo stessa (sperimentato con un file *.PNG). Usando la per inserire immagini all'interno di una tabella occorre utilizzare nel file di dati la sintassi: @image@=nomeimmagine dove nomeimmagine\= shortname dell'immagine il percorso ove recuperare l'immagine viene risolto in questo modo: 1. se nel file di informazioni è presente il campo cartellaImmagini=imagepath allora verrà usato imagepath 2. se non è presente il campo campo cartellaImmagini= allora verrà usato 3. imagepath=_path di avvio dell'applicazione\=path di dove viene lanciato xml2doc.doc Inclusione di file Usando la sintassi:Usando la <EMBEDDEDFILE:fullpath_nomefile.ext> La macro includerà il file indicato (deve essere in formato client). Tenere conto del fatto che un file viene incluso nella pagina corrente, se eccede la pagina il contenuto viene troncato. Per avere il contenuto completo se il file eccede la pagina di lunghezza, occorre embeddare come icona (il file compare come icona, è apribile clickandoci sopra, ma come icona viene stampato) <EMBEDDEDASICON:fullpath_nomefile.ext> La macro includerà il file come icona indicato (deve essere in formato client). per inserire file all'interno di una tabella occorre utilizzare nel file di dati le sintassi corrispondenti ai comportamenti sopra descritti: @embeddedfile@=nomefile @embeddedasicon@=nomefile dove _nomefile\= shortname del file il percorso ove recuperare il file viene risolto in questo modo: 1. se nel file di informazioni è presente il campo cartellaEFile=filepath allora verrà usato filepath 2. se non è presente il campo campo cartellaEFile= allora verrà usato 3. filepath=_path di avvio dell'applicazione\=path di dove viene lanciato xml2doc.doc Inclusione simboli Usando nel testo la sintassi:Usando la @symbol=[fontname,]asciicharcode@ La macro sostituirà al posto dell' _asciicharcode il singolo carattere corrispondente usando: - se è presente il fontname allora verà usato quel font per riprodurre il carattere, - se non è presente di default viene usato il font "Wingdings".
Estratto da documentazione interna ClickUp