Vytváření dokumentů MS Word a MS Excel: Porovnání verzí

Z enTeam
Skočit na navigaci Skočit na vyhledávání
Řádek 2: Řádek 2:
  
 
<h2>Princip generování dokumentů</h2>
 
<h2>Princip generování dokumentů</h2>
* 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ů".
+
* 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.
 
* 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 *.doc/*.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
+
* V případě souboru typu *.xls/*.xlsx předpokládáme, že skriptovací jazyk bude ukládat, nebo číst hodnoty z předem daných buněk
  
 
<h2>Vytvoření předávacího protokolu typu MS Word ze šablony</h2>
 
<h2>Vytvoření předávacího protokolu typu MS Word ze šablony</h2>
Pro správné fungování následujícího příkladu je nutné do skriptu doplnit definice funkcí z knihovny ActualDocument.dll<BR/>
 
 
Ukázka šablony: [[Média:Predavaci_protokol.docx]]
 
Ukázka šablony: [[Média:Predavaci_protokol.docx]]
 
<pre>
 
<pre>
Script PredavaciProtokolTypuDOC (): Boolean
+
declare procedure DocumentImportExt dll "ActualDocument" (string, string, string, string, string, pointer)
Var sTempFile,sTempDir, s : String
+
declare procedure ExportFromTemplatesExt dll "ActualDocument" (string, string, var integer, pointer)
    i, iRC : Integer
+
declare procedure FileDelete dll "ActualDocument" (string)
Begin
+
declare procedure GetTemp dll "ActualDocument" (string)
   GetTemp(sTempDir)
+
declare procedure WordClose dll "ActualDocument" (boolean)
   sTempFile := sTempDir+ "\predavak.docx"
+
declare procedure WordOpen dll "ActualDocument" (string)
   ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx" ,sTempFile,i,actualDocument) //export šablony do dočasného souboru v adresáři temp
+
declare procedure WordReplaceAll dll "ActualDocument" (string, string, var boolean)
   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
+
script PredavaciProtokolWord(): boolean
   WordReplaceAll("enT_datum",s,iRC) //nahrazení klíčového slova v šabloně skutečnou hodnotou z proměnné
+
var
   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
+
  TEMP: string
   WordReplaceAll("enT_autor",s,iRC)
+
  FileName: string
   WordReplaceAll("enT_společnost",wkf.sml_zakaznik,iRC)
+
  S: string
   WordClose(true) //uzavření nevizuálně spuštěné aplikace MS Word s uložením změn
+
  RC: integer
   DocumentImportExt("doc","Předávací protokol",sTempFile ,"_newdocument_",s,actualdocument) //import nové přílohy do procesu
+
begin
   FileDelete(sTempFile) //smazání dočasného souboru v adresáři Temp
+
   GetTemp(TEMP)
   Result := True
+
   FileName := TEMP + "\Protokol.docx"
End
+
   ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx", FileName, RC, actualdocument) // Export šablony do dočasného souboru v adresáři Temp
 +
 
 +
   WordOpen(FileName) // 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, RC) // 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, RC)
 +
   WordReplaceAll("enT_společnost", wkf.Zakaznik, RC)
 +
   WordClose(true) // Uzavření nevizuálně spuštěné aplikace MS Word s uložením změn
 +
 
 +
   DocumentImportExt("docx", "Předávací protokol", FileName, "_newdocument_", S, actualdocument) // Import nové přílohy do procesu
 +
   FileDelete(FileName) // Smazání dočasného souboru v adresáři Temp
 +
 
 +
   result := true
 +
end
 
</pre>
 
</pre>
  
 
<h2>Vyplnění šablony objednávky typu MS Excel</h2>
 
<h2>Vyplnění šablony objednávky typu MS Excel</h2>
 
<pre>
 
<pre>
Declare function ExcelOpenFromTemplates dll "actualDocument" (string,string,string,string,pointer):boolean
+
declare function ExcelCloseFromTemplates dll "ActualDocument" (string, string, boolean, boolean, string, pointer): boolean
Declare procedure ExcelWrite dll "actualDocument" (string,string,string)
+
declare function ExcelOpenFromTemplates dll "ActualDocument" (string, string, string, string, pointer): boolean
Declare function ExcelCloseFromTemplates dll "actualDocument" (string,string,Boolean,Boolean,string,pointer):boolean
+
declare procedure ExcelWrite dll "ActualDocument" (string, string, string)
 +
declare procedure ExcelWriteCurrency dll "ActualDocument" (string, string, currency)
  
Script ObjednavkaTypuXLSX (): Boolean
+
script ObjednavkaTypuXLSX(): boolean
Var sTempFile, s : String
+
var
    b : Boolean
+
  FileName: string
Begin
+
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
+
   // 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)
+
   ExcelOpenFromTemplates("Attachments\Objednavky\objednavka.xlsx", "List1", "", FileName, actualdocument)
   ExcelWrite("b","2",wkf.firma) //do buňky "b2" zapíše hodnotu z proměnné wkf.firma
+
   ExcelWrite("B", "2", wkf.Firma) // Do buňky "b2" zapíše hodnotu z proměnné wkf.Firma
   ExcelWrite("b","4",wkf.firma1D)
+
   ExcelWrite("B", "4", wkf.Adresa)
   ExcelWrite("b","7",wkf.popis1)
+
   ExcelWrite("B", "7", wkf.Popis)
   s := wkf.cena //proměnnou typu Currency uloží do proměnné typu String
+
   ExcelWriteCurrency("C", "19", wkf.Cena)
  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
   //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
+
   result := ExcelCloseFromTemplates("Objednávka", "", true, true, "_newdocument_", actualdocument)
   b := ExcelCloseFromTemplates("Objednávka","",true,true,"_newdocument_",actualDocument)
+
end
End
 
 
</pre>
 
</pre>
 
 
  
 
Zpět na stránku [[Prováděcí skripty]]
 
Zpět na stránku [[Prováděcí skripty]]
 
[[Category: MTB skripty]]
 
[[Category: MTB skripty]]

Verze z 14. 8. 2020, 09:26

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/*.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/*.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

Ukázka šablony: Média:Predavaci_protokol.docx

declare procedure DocumentImportExt dll "ActualDocument" (string, string, string, string, string, pointer)
declare procedure ExportFromTemplatesExt dll "ActualDocument" (string, string, var integer, pointer)
declare procedure FileDelete dll "ActualDocument" (string)
declare procedure GetTemp dll "ActualDocument" (string)
declare procedure WordClose dll "ActualDocument" (boolean)
declare procedure WordOpen dll "ActualDocument" (string)
declare procedure WordReplaceAll dll "ActualDocument" (string, string, var boolean)

script PredavaciProtokolWord(): boolean
var
  TEMP: string
  FileName: string
  S: string
  RC: integer
begin
  GetTemp(TEMP)
  FileName := TEMP + "\Protokol.docx"
  ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx", FileName, RC, actualdocument) // Export šablony do dočasného souboru v adresáři Temp

  WordOpen(FileName) // 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, RC) // 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, RC)
  WordReplaceAll("enT_společnost", wkf.Zakaznik, RC)
  WordClose(true) // Uzavření nevizuálně spuštěné aplikace MS Word s uložením změn

  DocumentImportExt("docx", "Předávací protokol", FileName, "_newdocument_", S, actualdocument) // Import nové přílohy do procesu
  FileDelete(FileName) // Smazání dočasného souboru v adresáři Temp

  result := true
end

Vyplnění šablony objednávky typu MS Excel

declare function ExcelCloseFromTemplates dll "ActualDocument" (string, string, boolean, boolean, string, pointer): boolean
declare function ExcelOpenFromTemplates dll "ActualDocument" (string, string, string, string, pointer): boolean
declare procedure ExcelWrite dll "ActualDocument" (string, string, string)
declare procedure ExcelWriteCurrency dll "ActualDocument" (string, string, currency)

script ObjednavkaTypuXLSX(): boolean
var
  FileName: string
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", "", FileName, actualdocument)
  ExcelWrite("B", "2", wkf.Firma) // Do buňky "b2" zapíše hodnotu z proměnné wkf.Firma
  ExcelWrite("B", "4", wkf.Adresa)
  ExcelWrite("B", "7", wkf.Popis)
  ExcelWriteCurrency("C", "19", wkf.Cena)
  // 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
  result := ExcelCloseFromTemplates("Objednávka", "", true, true, "_newdocument_", actualdocument)
end

Zpět na stránku Prováděcí skripty