Vytváření dokumentů MS Word a MS Excel: Porovnání verzí
								
								Skočit na navigaci
				Skočit na vyhledávání
				
				
							
								
							
		| Řádek 16: | Řádek 16: | ||
| Begin | Begin | ||
|    GetTemp(sTempDir) |    GetTemp(sTempDir) | ||
| − |    sTempFile := sTempDir+ "\predavak. | + |    sTempFile := sTempDir+ "\predavak.docx" | 
| − |    ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol. | + |    ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx" ,sTempFile,i,actualDocument) //export šablony do dočasného souboru v adresáři temp | 
|    WordOpen(sTempFile) //nevizuální otevření šablony |    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 |    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(" | + |    WordReplaceAll("enT_datum",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 |    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(" | + |    WordReplaceAll("enT_autor",s,iRC) | 
| − |    WordReplaceAll(" | + |    WordReplaceAll("enT_společnost",wkf.sml_zakaznik,iRC) | 
|    WordClose(true) //uzavření nevizuálně spuštěné aplikace MS Word s uložením změn |    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 |    DocumentImportExt("doc","Předávací protokol",sTempFile ,"_newdocument_",s,actualdocument) //import nové přílohy do procesu | ||
Verze z 11. 7. 2019, 12:16
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 enTeam Workflow manager jsou uloženy šablony dokumentů, ze kterých skript vytváří skutečné soubory. V enTeam Workflow designer 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ána 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.docx"
  ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx" ,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("enT_datum",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("enT_autor",s,iRC)
  WordReplaceAll("enT_společ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
