ukotvit menu |
Na jednom fóru se někdo poptával, jak z excelu nebo calcu udělat čistou html tabulku. Poradil jsem mu, aby ji uložil do CSV a to pak už jednoduše převedl na html. A protože je to velmi jednoduchá a přitom pro někoho užitečná záležitost, jal jsem se vytvořit ukázku v Pythonu.
Při převodu dojde k nahrazení zakázaných znaků & a < jejich entitami a doplnění html elementů table, tr a td. Dále pro možnost snadného ostylování každý řádek dostane svou vlastní třídu rowR (R = číslo řádku) a jednu z tříd odd nebo even pro odlišení lichých a sudých řádků. Nakonec každá buňka v řádku dostane svou třídu colC (C = číslo sloupce) a cellR-C pro individuální identifikaci každé buňky.
Nainstalovaný python od verze 2.5.
Spuštění programu je v linuxu jednoduché, na příkazový řádek napíšeme:
python csv2html.py data.csv
Výsledkem bude soubor data.csv.html v kterém bude html tabulka.
Ve windows je příkazová řádka nepoužitelná, takže si v nich pomůžeme metodou táhni a pusť. Bohužel nestačí přetáhnout csv soubor na ikonu python skriptu, to je na windows už příliš složité a nechápou to. Proto jsem ještě udělal spouštecí soubor csv2html.bat. Program spustíme tak, že csv soubor přetáhneme na ikonu tohoto spouštěcího souboru. Spouštěcí soubor musí být ve stejném adresáři jako program a nebo je nutno k němu ve spouštěcím souboru doplnit cestu.
csv2html.py 1446 B
csv2html.bat 37 B
Pro windows je tu ještě alternativa v binární podobě programu. Její výhodou je, že není potřeba mít nainstalovaný python, ale soubory které je nutno stáhnout jsou větší. Program se spustí přetažením csv souboru na exe.
csv2html.exe 276 286 B
python25.dll 2 113 536 B
msvcr71.dll 348 160 B
Poslední dva soubory musí být buď ve stejném adresáři s exe, nebo je možné
je zkopírovat do c:\windows\system32 a sdílet je s ostatními programy.
Pokud je už máte, není potřeba je opakovaně stahovat.
cd "%~d0%~p0" start csv2html.py %1
#!/bin/env python from csv import reader from os.path import isfile from sys import argv, exit def quit(): print "\nStiskni ENTER pro konec..." raw_input() exit() def main(): if len(argv) < 2: print "Zadej CSV soubor jako parametr." quit() csvPath = argv[1] if not isfile(csvPath): print "Soubor '%s' neexistuje." % csvPath quit() csvFile = open(csvPath, 'rb') parser = reader(csvFile, dialect='excel', delimiter=';') html = ['<table>'] for i, row in enumerate(parser): eo = 'odd' if i % 2 else 'even' html.append(' <tr class="%s row%d">' % (eo, i)) for j, cell in enumerate(row): cell = cell.replace('&', '&') cell = cell.replace('<', '<') html.append(' <td class="col%d cell%d-%d">%s</td>' % (j, i, j, cell)) html.append(' </tr>') html.append('</table>') htmlTxt = '\n'.join(html) htmlFile = open(csvPath + '.html', 'wt') htmlFile.write(htmlTxt) htmlFile.close() print "\n\nHOTOVO" quit() try: print "Konverze csv souboru do html tabulky." print "Copyright (c) 2007, Petr Mach, gsl@seznam.cz" print "Licence: GPL v 2.0, http://www.gnu.org/licenses/gpl-2.0.html" print main() except Exception, e: print "\n\nZACHYCENA CHYBA V PROGRAMU:\n" print e quit()