Vytváření dokumentů MS Word a MS Excel: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
(Není zobrazena jedna mezilehlá verze od stejného uživatele.) | |||
Řádek 2: | Řádek 2: | ||
<h2>Princip generování dokumentů</h2> | <h2>Princip generování dokumentů</h2> | ||
− | * V šablonách aplikace enTeam Workflow | + | * 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 | + | * 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 | + | * 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> | ||
− | |||
Ukázka šablony: [[Média:Predavaci_protokol.docx]] | Ukázka šablony: [[Média:Predavaci_protokol.docx]] | ||
<pre> | <pre> | ||
− | + | 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) | |
− | GetTemp( | + | declare procedure WordClose dll "ActualDocument" (boolean) |
− | + | declare procedure WordOpen dll "ActualDocument" (string) | |
− | ExportFromTemplatesExt("attachments\Protokoly\Předávací protokol.docx" , | + | declare procedure WordReplaceAll dll "ActualDocument" (string, string, var boolean) |
− | WordOpen( | + | |
− | + | script PredavaciProtokolWord(): boolean | |
− | WordReplaceAll("enT_datum", | + | var |
− | + | TEMP: string | |
− | WordReplaceAll("enT_autor", | + | FileName: string |
− | WordReplaceAll("enT_společnost",wkf. | + | S: string |
− | WordClose(true) // | + | RC: integer |
− | DocumentImportExt(" | + | begin |
− | FileDelete( | + | 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 | ||
</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 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","", | + | ExcelOpenFromTemplates("Attachments\Objednavky\objednavka.xlsx", "List1", "", FileName, actualdocument) |
− | ExcelWrite(" | + | ExcelWrite("B", "2", wkf.Firma) // Do buňky "b2" zapíše hodnotu z proměnné wkf.Firma |
− | ExcelWrite(" | + | ExcelWrite("B", "4", wkf.Adresa) |
− | ExcelWrite(" | + | 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 | |
− | |||
</pre> | </pre> | ||
− | |||
− | |||
Zpět na stránku [[Prováděcí skripty]] | Zpět na stránku [[Prováděcí skripty]] | ||
− | [[Category: | + | [[Category: enTeam skripty]] |
Aktuální verze z 22. 12. 2020, 21:30
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