Utilita StartExcel - automatický (periodický) export

Automatický export umožňuje periodicky (alebo pri určitej udalosti) aktivovať určitý zošit (report) uložený na pevnom disku v súbore *.xls, vyhodnotiť ho a následne aktívnu stránku uložiť do iného *.xls súboru do špecifikovaného adresára s voliteľným menom.


Export je možné vykonať pomocou utility StartExcel (súbor startexcel.exe sa nachádza v inštalačnom adresári v podadresári Bin) s nasledovnými parametrami:

Deklaráciastartexcel [/Q] [/I] [/D] fullXlsPath [StartMakro [ param1 .. paramN ]]
konkrétne pre automatický export:
startexcel [/Q] [/I] [/D] fullXlsPath StartParams EXP
Parametre
/QVýpis prípadných chybových hlásení do súboru (startexcel.log) a ukončenie utility startexcel.
/ISpustiť MS Excel ako viditeľný. Nepovinný parameter.
Na operačných systémoch MS Server 2008, MS Vista a Windows 7 sa neodporúča použiť parameter /I, ak je MS Excel štartovaný v kontexte service (Napríklad SELF.EVH štartovaný ako servis).
/DDo logovacieho súboru sú zapísane ladiace informácie vrátane zoznamu parametrov, ktoré boli zadané pri jeho spustení.
fullXlsPathPlná cesta k reportu (zošitu).
StartMakroVoliteľné meno makra v súbore, ktoré sa má vykonať.
param1 .. paramNVoliteľné parametre makra StartMakro.
StartParamsMeno makra v reporte, ktoré vykoná vlastný export dát.
EXPParameter makra StartParams špecifikujúci, že sa má vykonať export dát.
PopisUtilita StartExcel naštartuje MS Excel. Ak je parameter /I uvedený, MS Excel bude otvorený ako viditeľný. Ak je uvedený parameter /Q, prípadné chybové hlásenia budú zapísané do súboru startexcel.log a utilita StartExcel bude ukončená.
Následne otvorí zošit daný parametrom fullXlsPath a zavolá makro StartParams s parametrom EXP. Makro StartParams musí byť implementovaná v zošite (ak je zošit vytvorený z predlohy D2000_WorkBook.xlt, automaticky makro obsahuje).

Zošit sa automaticky prihlási k systému D2000 podľa prihlasovacích parametrov (USER_NAME, PASSWORD, SERVER), vyhodnotí sa a uloží kópiu aktívnej stránky zošita do nového súboru, ktorého meno je v bunke EXPORT_FILE_NAME. Táto je štandardne naplnená výrazom, ktorý existujúce meno zošita doplní dátumom a časom. V aplikácii je potrebné zmeniť adresár určený pre exportované reporty. V predlohe je nastavený na C:\Reporty.
Vyhodnotenie reportu je realizované nastavením časov v bunkách D2000_BT a D2000_ET na aktuálny čas.

Poznámka:
Periodický (alebo na základe ľubovoľnej podmienky) export je možné realizovať prostredníctvom ESL skriptu nasledovne:

  • vytvoríme objekt typu Event, ktorý sa bude štartovať keď treba vytvoriť export (napríklad periodicky)
  • zdrojový kód eventu:

INT _ret
TEXT _txtMsg
TEXT _report = "c:\Reporty\test1.xls"

; report export with 50 seconds timeout
_ret := RUN "startexcel.exe" SYNC " " + _report + " StartParams EXP" TIMEOUT 50
IF _ret\VLD THEN
IF _ret = _ERR_TIME_OUT THEN
  _txtMsg := "TIMEOUT pre export reportu"
ELSE
_txtMsg := "Export ExitCode = " + %IToStr(_ret)
IF _ret = 0 THEN
  _txtMsg := _txtMsg + " OK"
ELSE
IF _ret = 1 THEN
  _txtMsg := _txtMsg + " Init Ole Error"
ELSE
IF _ret = 2 THEN
  _txtMsg := _txtMsg + " Start Excel Error"
ELSE
IF _ret = 3 THEN
  _txtMsg := _txtMsg + " Open Report Error"
ELSE
IF _ret = 4 THEN
  _txtMsg := _txtMsg + " Run Macro Error"
ELSE
  _txtMsg := _txtMsg + " Unknown Error"
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
  _txtMsg := "Nepodarilo sa spustiť startexcel.exe"
ENDIF

LOG _txtMsg, SysTime
END

Po pokuse o export dát je ošetrená návratová hodnota akcie RUN so zápisom stavu exportu do monitorovacej databázy.

Automatický štart exportu je možné dosiahnuť vhodnou konfiguráciou systémovej služby: "Scheduled Tasks". Táto umožňuje periodicky vykonávať (štartovať) daný program.

Štartovanie Excelu z procesu D2000 Event bežiaceho ako servis

Pre korektné fungovanie je nutné vytvoriť vo Windows tieto adresáre:

  • 32-bitový Excel na 32-bitových Windows alebo 64-bitový Excel na 64-bitových Windows:
    mkdir C:\Windows\System32\config\systemprofile\Desktop
    mkdir C:\Windows\System32\config\systemprofile\Documents
  • 64-bitový Excel na 64-bitových Windows:
    mkdir C:\Windows\SysWOW64\config\systemprofile\Desktop
    mkdir C:\Windows\SysWOW64\config\systemprofile\Documents

Ak tieto adresáre neexistujú, StartExcel vracia chybu 3 (ERR_OPEN_DOC) a v logu StartExcel.log hlási chybu otvorenia dokumentu, napr.

[07-12-2023 08:14:47][INF][13428]   Start excel starting...
[07-12-2023 08:14:47][INF][13428]   Document name is 'd:\D2000\D2000_APP\Demo\Temp\Template.xls'
[07-12-2023 08:14:47][INF][13428]   CLSIDFromProgID SUCCESS
[07-12-2023 08:14:47][INF][13428]   CoCreateInstance SUCCESS
[07-12-2023 08:14:47][INF][13428]   StartExcel DONE
[07-12-2023 08:14:47][INF][13428]   Excel is running as hidden...
[07-12-2023 08:14:47][ERR][13428]   Error opening document d:\D2000\D2000_APP\Demo\Temp\Template.xls
[07-12-2023 08:14:47][INF][13428]   Uninit OLE...


Navyše je odporúčané spúšťať proces D2000 Event pod dedikovaným Windows užívateľom (napr. report). Aby fungovali makrá, je nutné sa prihlásiť ako tento užívateľ (report), spustiť Excel a v Nastaveniach (Options) ísť na položku Centrum dôveryhodnosti (Trust Center), kliknúť na Nastavenie Centra dôveryhodnosti (Trust Center Settings) a v záložke Nastavenie makier (Macro Settings) vybrať Povolenie všetkých makier (Enable all macros).

Bez povolenia makier bude StartExcel vracať chybu 4 (ERR_RUN_MACRO) a v logu StartExcel.log hlási chybu spustenia makra: 

[07-12-2023 08:39:04][INF][8604]   Start excel starting...
[07-12-2023 08:39:04][INF][8604]   Document name is 'd:\D2000\D2000_APP\Demo\Temp\Template.xls'
[07-12-2023 08:39:04][INF][8604]   CLSIDFromProgID SUCCESS
[07-12-2023 08:39:05][INF][8604]   CoCreateInstance SUCCESS
[07-12-2023 08:39:05][INF][8604]   StartExcel DONE
[07-12-2023 08:39:05][INF][8604]   Excel is running as hidden...
[07-12-2023 08:39:05][INF][8604]   d:\D2000\D2000_APP\Demo\Temp\Template.xls is opening...!
[07-12-2023 08:39:05][INF][8604]   Starting macro...
[07-12-2023 08:39:05][ERR][8604]   Error run macro!
[07-12-2023 08:39:05][INF][8604]   Closing document...
[07-12-2023 08:39:10][INF][8604]   Uninit OLE... 
    


Doporučené nastavenie parametrov zošita pre automatický export:


Dôležité sú bunky B1 až B3, bunka B5 musí mať hodnotu FALSE, bunka B11 – musí predstavovať korektné meno súboru, do ktorého bude export prebiehať. Ak súbor existuje, bude prepísaný.

0 komentárov

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .