szines tablazat generalas (pdf, spreadsheet, ...)

Fórumok

Udv!

Szeretnek egy tablazatot generalni, aminek van n oszlopa (5- 6), es sok sora. Az adatok mondjuk, hogy db- bol jonnek, es ezeket szeretnem tulajdonkeppen betolteni. Eddig ugye talan egy cvs is megfelelne, amit egy spreadsheet reader meg tud rendesen jeleniteni, de a trukk ott van, hogy bizonyos cellakat szinezni is kellene.

Erre keresek megoldast. Ez lehet pdf vagy xls, de akar mas alternativ megoldast is el tudok kepzelni (mivel sok sor lesz, image formatum nem jo).

Minden otlet erdekel.

Koszi a valaszokat.

Hozzászólások

Html,

Csinálhatsz html dokumentumokhoz egy print.css-t, amiben css-ben leszeded a "sallangokat" és nyomtatható lesz a dolog (ha nyomtatni kéne).

Ezen kívül van egy 1000 éves php library, ha jól emlékszem "SpreadsheetExcelWriter" a neve és PEAR-ból elérhető. Ez meg tudja oldani, de BAROMI régi.

Ha a Python nem akadály, akkor a ReportLab-bal nagyon formás pdf-eket lehet készíteni.
Bár én most a következő karakterek megjelenítésére szeretném rávenni: űŰ őŐ
A csicsázás: fontok beállítása, méretezés, színezés, elválasztóvonalak és "díszítősorok" beillesztése is megoldott. Csak az a fránya két magyar betű!
Az sem vigasztal, hogy némi keresgélés után megállapítottam, hogy a szlovákok és a lengyelek is találtak pár karaktert az ISO-8859-2 kódolásban ami nekik sem megy.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Ez esetben néhány direkt link, hogy ne keresd előröl:
http://www.reportlab.com/ftp/
http://www.reportlab.com/docs/
http://www.reportlab.com/examples/rml/

Ha rájössz, hogy hogy lehet őŐ űŰ karaktereket helyesen megjeleníteni vele, akkor megoszthatnád velem is.
Nekem csak ezekkel megy: õÕ ûÛ

Amúgy elég komoly, még bezier görbékkel is lehet benne operálni.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

A táblázatot programból kell előállítani. A ReportLab csak egy rajzlapot (festő vászon, azaz canvas) ad, amire neked kell rajzolni, a ReportLab nyújtotta eszközökkel.

Itt a példa:


#!/usr/bin/env python
#! -*- coding: utf-8 -*-

from reportlab.pdfgen import canvas

def tablicsku(c):
    data = [  
        ['Sorsz:', 'Kedvenc fílmem'],  
        ['1', 'Star Wars'],  
        ['2', 'Back to the  Future'],  
        ['3', 'Forrest Gump'],  
        ['4', 'Fight Club'],  
        ['5', 'The Matrix'],  
        ['6', 'Terminator'],  
        ['7', 'Alien'],  
        ['8', 'Die Hard'],  
        ['9', 'Blade Runner'],  
        ['10', 'Star Trek'],  
        ['11', 'V for Vendetta'],  
        ['12', 'Twelve Monkeys'],  
        ['13', 'The Truman Show']
        ]
    sor=832 # a lap felső széle. A lap alja a 0!
    for egysor in data:
        p1, p2 = egysor
        c.drawString(0, sor, p1)
        c.drawString(45, sor, p2)
        sor -=20

c = canvas.Canvas(".\\tablazat.pdf")
tablicsku(c)
c.showPage()
c.save()

A színezés, sorok rajzolása a te dolgod.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Koszi, kozben megoldottam maskeppen. Igazabol most olyan gondom van, hogy egy tablat akarok kirakni az oldalra, de ennek a szelessege generalastol fuggoen valtozik. Most A4- et hasznalok landscape modban kisebb fontokkal, igy meg eppen kifer, de ezt nem lehetne valahogy ugy beallitani, hogy akkorara vegye a lapmeretet, amekkora a legszelesebb sor? Nem nagyon talaltam ilyen opciot.

Próbálj találni vagy írni egy függvényt ami megadja mondjuk mm-ben az adott sor hosszát, az adott betűmérettel! Fix szélességű karakterekkel könnyebb lenne, akkor elég lenne azt megállapítani, hogy hány karakter fér el egy sorban.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Amit a 3-as fejezetben írnak, aszerint a latin-1-ről utf-8-ra konvertálva adja a kalapos hullámos ékezeteket. Ha latin2-ről konvertálom (ami a tényleges lenne) akkor egy fekete kocka jelenik meg a pdf-ben a betű helyén.
Ugyanez a helyzet (fekete kockák), akkor is ha eleve utf-8-as karaktersorozatot adok meg mondjuk a drawString sztring paraméterének.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Igazából felületes voltam és elakadtam a kódolásnál. Szóval annyira a kódolásokra koncentráltam, hogy a fejezet fő részét a Fontok használatát nem is néztem.
Fontokat cserélgetni most készülök. :-)
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Címszavak: Perl, DBI, Spreadsheet::WriteExcel.

Kész példa:
http://www.linuxjournal.com/content/generating-native-excel-files-perl

Még színezés is van benne. A S::WE dokumentációjában benne van, hogy a háttérszínt (vagy betűtípust vagy szegélyt vagy cellaméretet stb.) hogy lehet állítani.

PDF-et is lehetne gyártatni Perlből, akár közvetlenül (PDF::Create pl.), bár úgy bonyolultabb lenne, akár TeX-en keresztül, az elég egyszerű, csak kell hozzá a TeX környezet.

Ez a "bizonyos cellakat szinezni is kellene." lehetne részletesebb is.
Például egyszerűbb feltételek esetén a LibreOffice Calc-ban:
Kijelölöd azt a tartományt, amiben a színezendő cellák vannak. Utána Formátum/Feltételes formázás… menüpontban beállítod a feltétel(eke)t, és az Új stílus gombbal kiszínezed azt amit akarsz.

Kérdés milyen programozási nyelvet használsz, kivel akarsz kompatibilis lenni, stb...
Mi Javaban ezzel generálunk excel fájlokat: http://poi.apache.org

Üdv: Tamaas