Vytváření dokumentů MS Word a MS Excel

Z enTeam
Verze z 24. 9. 2014, 04:22, kterou vytvořil en>Kadel
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

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