Autor Zpráva
gurgen
Profil
Ahoj našel jsem následující script pro export externího csv excelu do html, jediné co mi vadí jsou čísla řádků (1, 2, 3 ...), lze to nějak obejít?

Případně poznáte jiné hotové řešení? Se zachováním možnosti seřazovat podle sloupce a generovat pomocí externího csv?
sysel
Profil
Hm,
- co je to, podle Vás, "externího csv excelu"; "csv"=comma separated values, je způsob zápisu tabulky, kdy jednotlivé položky jsou oddělovány čárkami a každý řádek tvoří jeden záznam o stejném počtu položek; většina programů pro práci s tabulkami (tzv. spreadsheet) má importní filtr pro "csv" formát, kde lze vybrat typ separátoru (nemusí to být nutně jenom čárka, ale volit lze mezi středníkem, pomlčkou, mezerou nebo si zadat vlastní oddělovač), popřípadě lze akceptovat textové řetězce ohraničené uvozovkami, často lze i zvolit vstupní kódovací tabulku.
- jaký je vlasrně problém? co je předpokládaným vstupem, co se má získat na výstupu?
BTW: běžné tabulkové kalkulátory (spreadsheety) umí importovat jednodouchou tabulku ve formátu HTML, některé mohou svou pracovní tabulku do formátu HTML exportovat (nebo uložit jako ...)
- zkonvertovat tabulku z formátu csv do formátu HTML lze celkem snadno i v jakémkoliv textovém editoru:
na začátek každého řádku se umístí tagy: <tr><td>
na konec každého řádku se umístí tagy: </td></tr>
každou odělovací čárku vyměníte za tagy: </td><td>
nad první řádek umístíte tagy: <html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></head><body><table>
--- namísto utf-8 použijete správné označení Vámi použitého kódování češtiny
pod poslední řádek umístíte tagy: </table></html>
Takové úpravy lze samozřejmě provést najednou pomocí různých programových prostředků, například v Linuxu pomocí skriptovatelného editoru "sed".
Nebo lze jednoduše tabulku ve formátu csv naimportovat do LibreOffice nebo OpenOffice kalkulační tabulky a vzápětí vyexportovat (uložit jako ..) ve formátu HTML. To sice tabulku poněkud nafoukne různými zbytečnostmi jako css, ale použitelné to bude.
Hm.
gurgen
Profil
šlo mi o to, aby stačilo při nalezení chyby dat v tabulce pouze opravit excel a ten nahrát na web, vyhnout se tak složitosti celé vše znovu generovat.

Tohle splňuje a podařilo se mi pomocí css nepotřebný sloupec skrýt, pouze mám nyní problém ještě k převedením kodování. Pomocí PSPad editoru středníky nahradím čárkami, ale kodování mi prostě nechce projít
sysel
Profil
Inu, tak když nejde převést kódování, pak zvážit možnost přijmout to kódování jako hlavní a uvést je v tagu <meta . . charset=. . >. Jest-li sveřepě trváte na práci v MS Windows, pak to nejspíše bude UNICODE.
gurgen
Profil
díky za radu a zkusím jej uvést s tagu.

Ještě ohledně toho nahrazení středníků na čárky, to asi nejde nějak zjednodušit a nebo ten script upravit, aby to rozdělovalo ne na základě tedy čárek, ale středníků?

Pokud by to vše fungovalo, bylo by to nejideálnější, i z toho pohledu, že i laik by pouze přehrál excel a načetlo by to potřebná data, bez nutnosti cokoliv v souboru nahrazovat :-)
Kajman
Profil
gurgen:
script upravit, aby to rozdělovalo ne na základě tedy čárek, ale středníků?

Zkuste v té knihovně
var data = $.csv.toArrays(result);
nahradit za
var data = $.csv.toArrays(result,{separator:options.delimiter});

A následně ten středník nastavit při volání, např.
$(obj).jexcel({
    csv:'http://example.com/demo.csv',
    ...,
    delimiter: ';'
});
gurgen
Profil
Kajman:
díky, úprava pomohla, nyní ještě prosím poslední věc ta kódování

sysel:
zkouším utf, iso, windows, ale nic mi z toho nepomáhá :-(
Kajman
Profil
Nepomůže, když server, na kterém je csv soubor, bude v http hlavičce uvádĕt jeho kódování?
gurgen
Profil
Kajman:
jak je to myšleno? zatím to vše testuju na local
Kajman
Profil
Když si cvs otevřete přímo v prohlížeči, tak by tam mělo být kódování korektně. Tohle zkuste vyřešit.

K tomu, aby prohlížeč věděl, v jakém kódování je ten text, může poslat server (třeba i apache na localhostu) informace v http hlavičce.

Pokud je soubor v cp1250, tak nastavte server tak, aby pro csv přidával http hlavičku
Content-Type: text/csv; charset=windows-1250
gurgen
Profil
Kajman:
bohužel stále tomu nerozumím a nefunguje mi to

obsah stránky je následující, pořád se vypisují otazníky ve čtverci
<html>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/0.71/jquery.csv-0.71.min.js"></script>

<script src="js/jquery.jexcel.js"></script>
<link rel="stylesheet" href="css/jquery.jexcel.css" type="text/css" />

<div id="my"></div>

<script>
$('#my').jexcel({
    csv:'source/demo.csv',
    csvHeaders:true,
    colWidths: [70, 200, 70],
    delimiter: ';'
});
</script>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</html>
Kajman
Profil
Tipuji, že máte v prohlížeči např. takovouto url
http://localhost/testcsv.html

Otevřete si v prohlížeči vývojářské nástroje (typicky klávesou F12), otevřete si záložkou se síťovými požadavky.

Url v prohlížeči změňte na něco takového
http://localhost/source/demo.csv

Je tam diakritika v pořádku? Jaké http hlavičky odpovědi jsou uvedené ve vývojářských nástrojích? Můžete někde zpřístupnit demo.csv?
gurgen
Profil
Kajman:
nerozumím tomu, na co se ptáte a ani kde tu diakritiku hledat.

Testuju na následujícím souboru: https://ulozto .cz/!2cn2yI5X51mg/demo-csv
Kajman
Profil
Ten soubor je v kódování windows-1250 (někdy označované jako cp1250). Nevím, co máte na locale a na hostingu za http server. Pokud je to apache a je povolená úprava jeho konfigurace přes .htaccess, tak si do něj přijete řádek.

AddCharset windows-1250 .csv

Pokud si to jen u sebe otevíráte v prohlížeči bez použití http serveru a v adresním řádku máte file:///, tak tam http hlavičky nedostanete.
gurgen
Profil
Kajman:
uf, tak já fakt nevím, o čem mluvíte.

Testuju vše na localu, v adresním řádku mám http://localhost/excel/excel.html

do složky excel jsem přidal soubor .htaccess s Vámi uvedeným obsahem kodování, ale stále beze změny

Takže něco pořád dělám špatně :(
Kajman
Profil
Pokud do .htaccess dáte řádky
Order deny,allow
Deny from all
A ta adresa bude stále fungovat, tak nemáte povolený .htaccess

Pokud máte apache, tak si v jeho instalaci najděte konfigurační soubor (zpravidla httpd.conf) a změňte nastavení AllowOverride na All pro Váš DocumentRoot.
...
DocumentRoot "C:\cesta\k\adresari\ve\kterem\je\adresar\excel"
...
<Directory "C:\cesta\k\adresari\ve\kterem\je\adresar\excel"> 
  ...
  AllowOverride All
  ...
</Directory>
uložte a restartuje apache.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0