Vytváření dokumentů MS Word a MS Excel
Verze z 24. 9. 2014, 04:22, kterou vytvořil en>Kadel
Pomocí připravených funkcí je možné jednoduše vytvářet, nebo editovat soubory typu MS Word a MS Excel. Do jisté míry je podporován také balík Open Office. Funkce pro práci s těmito soubory jsou připraveny v knihovně rozšiřujících funkcí ActualDocument.dll
Princip generování dokumentů
- V šablonách aplikace M/TeamBridge jsou uloženy šablony dokumentů, ze kterých skript vytváří skutečné soubory. Ve workflow designeru je možné zobrazit správu šablon v menu "Nástroje/Administrace/Vzory dokumentů".
- Sice mluvíme o šablonách, ale jde přímo o finální dokumenty, které však musí splňovat určité předpoklady.
- V případě souboru typu *.doc, případně *.docx jsou na místech, do kterých chceme uložit hodnoty proměnných workflow, zapsány klíčová slova, která následně skript nahrazuje za hodnoty zmíněných proměnných.
- V případě souboru typu *.xls, případně *.xlsx předpokládáme, že skriptovací jazyk bude ukládat, nebo číst hodnoty z předem daných buněk
Vytvoření předávacího protokolu typu MS Word ze šablony
Pro správné fungování následujícího příkladu je nutné do skriptu doplnit definice funkcí z knihovny ActualDocument.dll
Ukázka šablony: Média:Predavaci_protokol.docx
Script PredavaciProtokolTypuDOC (): Boolean Var sTempFile,sTempDir, s : String i, iRC : Integer Begin GetTemp(sTempDir) sTempFile := sTempDir+ "\predavak.doc" ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.doc" ,sTempFile,i,actualDocument) //export šablony do dočasného souboru v adresáři temp WordOpen(sTempFile) //nevizuální otevření šablony s := wkf.datum //funkce WordReplaceAll očekává hodnotu typu String. Proto je nutné proměnné typu Date nejprve uložit do typu String a teprve následně volat funkci WordReplaceAll WordReplaceAll("mtbdatum",s,iRC) //nahrazení klíčového slova v šabloně skutečnou hodnotou z proměnné s := actuser.firstname + " " + actuser.name //proměnná "s" bude obsahovat křestní jméno a příjmení aktuálně přihlášeného uživatele WordReplaceAll("mtbautor",s,iRC) WordReplaceAll("mtbspolečnost",wkf.sml_zakaznik,iRC) WordClose(true) //uzavření nevizuálně spuštěné aplikace MS Word s uložením změn DocumentImportExt("doc","Předávací protokol",sTempFile ,"_newdocument_",s,actualdocument) //import nové přílohy do procesu FileDelete(sTempFile) //smazání dočasného souboru v adresáři Temp Result := True End
Vyplnění šablony objednávky typu MS Excel
Declare function ExcelOpenFromTemplates dll "actualDocument" (string,string,string,string,pointer):boolean Declare procedure ExcelWrite dll "actualDocument" (string,string,string) Declare function ExcelCloseFromTemplates dll "actualDocument" (string,string,Boolean,Boolean,string,pointer):boolean Script ObjednavkaTypuXLSX (): Boolean Var sTempFile, s : String b : Boolean Begin //následující příkaz v sobě kombinuje několik příkazů: nalezne adresář TEMP, exportuje šablonu a nevizuálně otevře MS Excel ExcelOpenFromTemplates("Attachments\Objednavky\objednavka.xlsx","List1","",sTempDir,actualDocument) ExcelWrite("b","2",wkf.firma) //do buňky "b2" zapíše hodnotu z proměnné wkf.firma ExcelWrite("b","4",wkf.firma1D) ExcelWrite("b","7",wkf.popis1) s := wkf.cena //proměnnou typu Currency uloží do proměnné typu String ExcelWrite("c","19",s) //následující příkaz importuje šablonu jako novou přílohu procesu, smaže dočasný soubor a uzavře nevizuální aplikace MS Excel b := ExcelCloseFromTemplates("Objednávka","",true,true,"_newdocument_",actualDocument) End
Zpět na stránku Prováděcí skripty