Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno 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.

Předmět Autor Datum
Jak vypada to HTML? Je tam nejaka definice sloupcu a formatu?
Jan Fiala 04.11.2022 14:10
Jan Fiala
Originální výstup je složitý a nepřehledný, ale vyrobil jsem ručně testovací soubor, který obsahuje…
PavelX 04.11.2022 14:48
PavelX
Informační systém neumožňuje export v jiném (normálním) formátu než HTML? :-?
host 04.11.2022 14:37
host
Samozřejmě, je tam i .XLSX formát, jenže ten Excel po otevření zprzní úplně stejným způsobem. Stačí…
PavelX 04.11.2022 15:02
PavelX
...a musí to byť v zdroji napísané ako LED4122? Chápem, že tam nechceš mať podtržítko a podobne (med…
robert13 04.11.2022 15:05
robert13
Máš samozřejmě naprostou pravdu, ale toto je standardní typ označení sloupce, který je potřebný z po…
PavelX 04.11.2022 15:11
PavelX
Prostě cokoliv je větší problém než No ale tak aj pridanie apostrofu do zdroja by bol problém, ne…
robert13 04.11.2022 15:28
robert13
Já si samozřejmě poradím, ale tady se jedná o cca 200 standardních uživatelů, kteří si s ničím složi…
PavelX 04.11.2022 15:57
PavelX
Jakým způsobem se ty data do toho excelu vůbec dostanou?
Siki83 04.11.2022 15:34
Siki83
asi jednoducho otvorí v exceli... Vychádzam z toho, že nie je žiadúce editovať v exceli, čo by zname…
robert13 04.11.2022 15:38
robert13
No ano, v případě potřeby následné editace otevřou uživatelé soubor v Excelu. Nebo přímo z aplikace…
PavelX 04.11.2022 16:01
PavelX
Tak si to zrekapitulujme: - Nechceme robiť zmeny v exceli, lebo sa jedná o 200 bežných užívateľov -…
robert13 04.11.2022 17:12
robert13
Vyzkoušíme a uvidíme, zda to takto půjde. Problém spatřuji jen v případné komplikaci při následném z…
PavelX 04.11.2022 17:23
PavelX
Ešte ma napadá jedna vec, ktorú ale neviem teraz overiť, lebo píšem z mobilu... Či v možnostiach Exc…
robert13 04.11.2022 17:20
robert13
Řešení na úrovni uživatele je celá řada a všechny vyžadují nějaké individuální nastavení Excelu či p…
PavelX 04.11.2022 17:24
PavelX
Pre istotu si testom over, či funguje pridanie nezalomiteľnej medzery na koniec označenia (ľavý! ALT…
robert13 04.11.2022 17:46
robert13
A to je právě ten problém. Když otevřu např soubor csv rovnou v excelu, tak se snaží určit pravděpod…
Siki83 04.11.2022 17:26
Siki83
Rozumiem, ale ide o to odbúrať potrebu akýchkoľvek úprav do žiadaného tvaru užívateľmi...
robert13 04.11.2022 17:34
robert13
Ale jo, jen sem z předchozích reakcí tazatele nabyl dojmu, že nelze uživatele instruovat jak mají da…
Siki83 04.11.2022 17:47
Siki83
Nečetl jsem všechno, tak nevím, zdali se neopakuji. Co udělat makro, spuštěné při startu, které nast…
Rce 05.11.2022 00:53
Rce
Problém jsme nakonec vyřešili přidáním tvrdé mezery na konec problémového řetězce. Je to sice poněku… poslední
PavelX 11.11.2022 14:07
PavelX

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.

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ě.

Prostě cokoliv je větší problém než

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.

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

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í.

Zpět do poradny Odpovědět na původní otázku Nahoru