Problém při načítání html souboru do Excelu
Potřebuji načítat výstupní sestavy generované informačním systémem do Excelu. Vše funguje do okamžiku, než se v sestavě vyskytne údaj například: LED4122. Excel tento text převede nesmyslně na datum I.22 čímž se celá sestava znehodnotí. Předpokládal jsem, že když se údaj zadá s příznakem textu, čili takto: 'LED4122, Excel bude pracovat správně. Ale tento příznak Excel naopak ignoruje a zobrazuje. Nějaký nápad na použitelné řešení? Přes Google jsem nic nenašel. Smysl má úprava výstupního souboru, který se generuje programově. Jakákoliv následná editace tisíců sestav v Excelu postrádá smysl.
Jak vypada to HTML? Je tam nejaka definice sloupcu a formatu?
Originální výstup je složitý a nepřehledný, ale vyrobil jsem ručně testovací soubor, který obsahuje (kromě standardního záhlaví) toto:
<body>
<p>LED4122</p>
<p>'LED4122</p>
</body>
Chrome zobrazí podle očekávání toto:
LED4122
'LED4122
Excel zobrazí toto (čili vše špatně):
I.22
'LED4122
Pokud dokážeš poradit nějaký způsob formátu, který by Excel dokázal akceptovat a korektně zobrazit, byl by problém vyřešen.
Informační systém neumožňuje export v jiném (normálním) formátu než HTML?
Samozřejmě, je tam i .XLSX formát, jenže ten Excel po otevření zprzní úplně stejným způsobem.
Stačí když jen napíšeš do Excelu LED4122 a zmrší se to na datum.
HTML řeším proto, že tam se dá něco ručně editovat, zkoušet a hledat řešení.
...a musí to byť v zdroji napísané ako LED4122?
Chápem, že tam nechceš mať podtržítko a podobne (medzera nefunguje), ale existuje finta: ak dáš medzi LED a 4122 napr. nezalomiteľnú medzeru (ALT+0160), Excel Ti to načíta tak, ako potrebuješ.
Otázne je, či vieš zdroj upraviť tak, aby Ti tam tie nezalamovateľné medzery dával...
Je Ti jasné, kde musíš urobiť túto opravu: ide o interpretáciu dátumu: LED = Leden
Máš samozřejmě naprostou pravdu, ale toto je standardní typ označení sloupce, který je potřebný z pohledu uživatelů. Je to složené ze tří kódů a generuje se automaticky (mnoho různých variant). To by až tolik nevadilo, jenže se s tím potom někdy zase dále programově pracuje. Prostě jsou tam souvislosti, které nelze jednoduše obejít tím, že změním způsob jakým se generují tyto kódy. Jinak bych tam prostě nechal ten apostrof a dál to neřešil. To problémové LED bych teoreticky mohl změnit v centrálním číselníku, ale je to desítky let používaná zavedená zkratka které každý uživatel rozumí. Prostě cokoliv je větší problém než donutit Excel, aby to zobrazil správně.
No ale tak aj pridanie apostrofu do zdroja by bol problém, nezávisle od toho, že ti to potom v Exceli zobrazí s apostrofom...
Lebo ak nie je problém v zdroji pridať apostrof, potom aký problém urobiť makro, ktoré pri otvorení excelu skonvertuje stĺpec do textu a vymaže apostrof?
Ak nevieš ovplyvniť generovaný výstup, Excel Ti to nevie načítať v Tebou požadovanom tvare. Každopádne bude musieť byť robená následná úprava v Exceli.
Ale to sa dá dosiahnuť automatizovane... makrom
Já si samozřejmě poradím, ale tady se jedná o cca 200 standardních uživatelů, kteří si s ničím složitějším v Excelu prostě neporadí.
Jen upřesním - generovaný výstup ovlivnit do určité míry můžu (viz neúspěšný pokus s přidáním apostrofu), stačilo by přijít na způsob formátu v html kódu, aby Excel při otevření souboru akceptoval položku jako text. Naneštěstí to nejde nastavit pro celý sloupec, protože většina údajů jsou čísla a je potřeba aby i v Excelu zůstal formát čísla. Ono všechno celé roky funguje, akorát ten nešťastný kód "LED" který Excel tvrdošíjně chápe jako leden. Navíc to vypadá, že je to problém až s nějakými posledními verzemi Excelu, protože se mi nezdá, že by se to neprojevilo už někdy dříve.
Jakým způsobem se ty data do toho excelu vůbec dostanou?
asi jednoducho otvorí v exceli...
Vychádzam z toho, že nie je žiadúce editovať v exceli, čo by znamenalo ani predefinovávať konverziou textu na stĺpce...
No ano, v případě potřeby následné editace otevřou uživatelé soubor v Excelu. Nebo přímo z aplikace se rovnou zavolá Excel, což je ještě rychlejší a z pohledu uživatele jednodušší. V Excelu je původní údaj po otevření v podstatě zničen, nelze se nijakou uživatelsky snadnou změnou formátu vrátit k původní podobě z I.22 do LED4122.
Tak si to zrekapitulujme:
- Nechceme robiť zmeny v exceli, lebo sa jedná o 200 bežných užívateľov
- Excel údaj LED4122 proste neprijme ako text
Z toho vyplýva, že musíme zmeniť zdroj.
- Chceme zachovať tvar zápisu ako je v číselníku, t.j. medzeru doprostred vkladať nebudeme.
- Určité zmeny v zdroji robiť vieme, viď test
Jediné, čo mi zatiaľ vychádza ako najjednoduchšie, je vložiť v zdroji onú nezalomiteľnú medzeru na koniec označenia LED4122.
Aj to bude rovnako vyzerať, aj to bude text, aj to excel otvorí ako text...
V zdroji treba nájsť formu, ako sa zaistí, aby sa k týmto nešťastným položkám (ak som dobre pochopil, je to len LED....) pripísala na koniec nezalomitelná medzera...
To by vôbec nemal byť problém...
Vyzkoušíme a uvidíme, zda to takto půjde. Problém spatřuji jen v případné komplikaci při následném zpracování dat, zda nebude nutné ty koncové "mezery" odsekávat.
Ale to je také řešitelné programově, nikoliv uživatelsky.
Díky za tip!
Ešte ma napadá jedna vec, ktorú ale neviem teraz overiť, lebo píšem z mobilu... Či v možnostiach Excelu nie je nejaké nastavenie formátov dátumu, kde by sa kontrolovala nezmyselnosť (rok 4122) napr zadaním hornej hranice dátumu. Ovšem ak by sa to dalo, bolo by potrebné to nastavenie vykonať jednorazovo u všetkých užívateľov...
Řešení na úrovni uživatele je celá řada a všechny vyžadují nějaké individuální nastavení Excelu či použití makra.
S tou pevnou mezerou to zatím vypadá nejnadějněji.
Pre istotu si testom over, či funguje pridanie nezalomiteľnej medzery na koniec označenia (ľavý! ALT+0160)
A to je právě ten problém. Když otevřu např soubor csv rovnou v excelu, tak se snaží určit pravděpodobný formát a jednotlivá data doje*e.
Pokud otevřu prázdný excel a provedu import dat csv souboru přes průvodce a zvolím si o jaký formát se jedná, není problém.
Rozumiem, ale ide o to odbúrať potrebu akýchkoľvek úprav do žiadaného tvaru užívateľmi...
Ale jo, jen sem z předchozích reakcí tazatele nabyl dojmu, že nelze uživatele instruovat jak mají data zpracovávat a ani se mu moc nechce upravovat způsob generování exportu. To že se Excel snaží (většinou s mizerným výsledkem) předpovědět formát dat je jeho vlastnost, nikoliv funkce, kterou by šlo jednoduše vypnout.
Tím pádem je Tvůj návrh na použití pevné mezery řešením, kterého si 99,9% uživatelů ani nevšimne a účel to splní.
Nečetl jsem všechno, tak nevím, zdali se neopakuji. Co udělat makro, spuštěné při startu, které nastaví formát toho slupce jako znakový? Excel tolik neznám, používám LibreOffice.
Problém jsme nakonec vyřešili přidáním tvrdé mezery na konec problémového řetězce. Je to sice poněkud primitivní a nesystémové řešení, ale funguje to.
Děkuji za rady.