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

 ( fn26 | 2011. június 22., szerda - 12:33 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

HTML?

Amúgy azt csv-nek hívják.

Tudom, elirtam.

Html sajnos ebben az esetben nem jo. Html az alap, ahol meg van oldva, de szukseges egy masik verzio, ami sallangok nelkul tartalmazza csak az adatokat.

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.

xml+xsl?

xml -> csak a tiszta adatoknak
xsl -> szines html-t konvertalhatsz az xml-bol (nem xls, hanem xsl)

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

Jelen esetben pont a python a legjobb, legalabb nem kell kulso binarist hivni. Megnezem. Koszi.

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

Ha ezt egy oraja olvasom :- ).

Nincs veletlen egy nagyon egyszeru peldad egy 2x2- es tabla kirakasara mindenfele sallang nelkul, vagy valami hasonlo?

Amugy itt a doksiban a 3- as fejezet (Fonts and Encodings) nem segit a karakterproblemadon?

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.

Szerintem ilyet készen nem fogsz találni. Valószínűleg ezt már neked kell leprogramozni.

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

Az lesz majd hetfon. Koszi.

Erre valók a Platypus Table dolgok. Egy rövid tutorial.

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

Sajnos ebben nem tudok segiteni, csak angol karaktereim vannak :- ).

Esetleg ezt próbáld meg:

Arra gondolsz, hogy a "gyárilag" szállított fontokban van a hiba?
Ha ezt ilyen egyszerű helyettesíteni, akkor megnézem hogy reagál rá.
Köszönöm szépen.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

A 3. fejezetet, a fontokról szóló részt érdemes átolvasni:
http://www.reportlab.com/docs/reportlab-userguide.pdf

szerk.: most látom fentebb, hogy ezen már túl vagy :)

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

Szerintem a reportlab-ra épülő xhtml2pdf (alias pisa) nevű libbel sokkal jobban jársz. Ennek segítségével: Kiolvasod az adatokat az adatbázisból > Generálsz egy HTML oldalt (itt beleteszed egy table-be az adatokat), majd azt mondod az xhtml2pdf-nek, hogy csinálj ebből pdf-et.

Fpdf
SetDrawColor metódus?

illetve: http://php.net/manual/en/book.pdf.php

üdv: redman

http://www.redman.hu

[Feliratkozás]

+1

+1

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