Vytváření dokumentů MS Word a MS Excel
Verze z 4. 7. 2019, 21:14, kterou vytvořil EnTeamAdmin (diskuse | příspěvky) (naimportována 1 revize)
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