přihlásit 6826/824567

ukázka - csv2html

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.

Požadavky

Nainstalovaný python od verze 2.5.

Spuštění

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.

Ke stažení

csv2html.py 1446 B
csv2html.bat 37 B

Binární alternativa

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.


csv2html.bat

cd "%~d0%~p0"
start csv2html.py %1

csv2html.py

#!/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('&', '&amp;')
            cell = cell.replace('<', '&lt;')
            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()

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs2/wraithcz/home/www/python/data/sessions/sessions1.php on line 2