Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
PHPExcel: tabulky jednoduše

David Grudl aura:74
11. 11. 2009 1:45 Nový

Zajímavost

celé vlákno

Jen taková zajímavost – mezi přispěvateli do kódu je uveden i Jakub Vrána http://phpexcel.codeplex.com/wikipage?…

Jakub Vrána aura:44
11. 11. 2009 23:11 Nový

Re: Zajímavost

celé vlákno

To je pravda, napsal jsem načítání a integroval čtení a zápis starších verzí Excelu. Viz také můj starší článek http://php.vrana.cz/…ml-v-php.php

Pavel Ptáček
15. 11. 2009 13:52 Nový

Re: Zajímavost

celé vlákno

Zajímavosti jsem si nevšiml, nicméně na článek jsem narazil již před nějakou dobou – zrovna když jsem knihovnu s funkcemi PHPExcel hledal :)

David
David (neregistrovaný) ---.skoda-auto.cz
11. 11. 2009 10:55 Nový

Pozor na délku provádění skriptu a operační paměť

celé vlákno

Knihovna je skutečně skvělá a není problém vygenerovat téměř cokoliv. Na co však chci upozornit případné zájemce, zápis do XLSX (ostatní jsem nezkoušel) je hodně drahý v případě, že stylujete buňky a provádíte další šílenosti. Další věc, kterou knihovna žere po megabajtech, je operační paměť. Načtení existujícího nebo vytvoření vlastního souboru je opravdu náročné.
Na levném hostingu se vám toto může vymstít.
Myslete na to a řádně testujte.

Je tu velký prostor pro vylepšování knihovny, snad se k tomu někdy někdo dostane.

dc
dc (neregistrovaný) ---.mcrn.sk
11. 11. 2009 15:53 Nový

Re: Pozor na délku provádění skriptu a operační paměť

celé vlákno

pouzival som ju v jednom projekte kde som ale potreboval generovat pomerne velke dokumenty (niekolko desiatok zaloziek a kazda obsahovala pomerne vela buniek) a v takom pripade bola tato kniznica skoro nepouzitelna.Bezne phpcko pri generovani zozralo aj cez 256MB ram a viac a tiez doba generovania bola obcas dost dlha. Na male veci je to fajn ale na generovanie vecsich sheetov to nieje moc vhodna kniznica.

Pavel Ptáček
15. 11. 2009 14:10 Nový

Re: Pozor na délku provádění skriptu a operační paměť

celé vlákno

Co se paměťové náročnosti týče, v současné době patřím k těm, kteří to pro dané projekty nemusí řešit.

Nicméně, napadá mne několik řešení:
1.) Sdílené styly (aspoň tak jsem to pochopil) viz http://phpexcel.codeplex.com/…ad/View.aspx?… . Ani duplicateStyle ani setSharedStyle se mi nepodařilo rozchodit, ale pokud to vnímám správně pak by shared style daný styl měl zapsat do souboru jenom jednou. Pokud nastavujete styl pro buňky A1:Z2540, pak bych si tipl, že PHPExcel vytvoří v paměti jeden styl pro jednu buňku – v tomto případě se pak bavíme o 32*2540 což je samozřejmě nechutné pro paměť.
Shared styles – pokud se vám je podaří rozchodit – by tento problém měli efektivně odstranit.
2.) Generovat vždy jeden worksheet do samostatného souboru – v podstatě rozdělit práci. V praxi bych to řešil vyexportováním 5 souborů (každý s jedním worksheetem) a pak měl skript, který vše sloučí dohromady – .xlsx soubor je jenom prostý ZIP, tím pádem by mělo stačit vše nakopírovat do složky „worksheets/“ a příslušné upravit soubor workbook.xml (viz článek pana Vrány: http://php.vrana.cz/…ml-v-php.php)

Podobným způsobem v současnosti řeším mass import souborů do CMS kde mám tři skripty:
1.) ten, co rozbalí ZIP od uživatele do dočasné složky, nakonec pošle header(„Location: ") na importovací skript
2.) ten, co prochází dočasnou složku a po každých 500 souborech pošle header(“Location: ") sám na sebe. Pokud již nemá co importovat, zašle header zpět na hlavní skript
3.) Skript který volám z konzole – tzv. entry point. Ten je zadán do crontabu a používá curl na načtení mass importu.

Pokud zkombinujeme oba přístupy, pak by jsme mohli docílit kýženého výsledku. Napadá mne rovněž vše vygenerovat v PHPExcel do jednoho worksheetu vždy s jedním stylem – a styly pak rozkopírovat skriptem jiným, který bude editovat přímo obsah jednotlivých xml souborů v rámci .xlsx souboru.

Jedná se o teorii, nicméně je to pořád příjemnější než jedna knihovna na kterou jsem narazil také – ta generovala klasickou HTML tabulku a vše ukládala do .xls souboru . Zábavné je, že to fungovalo (nicméně, bez diakritiky…)

Pokud tu náročnost na paměť budete dál řešit a naleznete nějaké chytré řešení, budu rád pokud dáte vědět.

roman
roman (neregistrovaný) ---.91-127-208.t-com.sk
25. 11. 2009 21:13 Nový

Re: Pozor na délku provádění skriptu a operační paměť

celé vlákno

Kod tohoto som nevidel, ale neverim na efektivnost objektoveho PHP kodu a mam pocit, ze programator sa zaobera skor cistotou kodu z hladiska POHLADU druheho programatora co to bude citat, ako efektivnostou, co sa nakoniec niekde vypomsti.

xx
xx (neregistrovaný) ---.anonymouse.org
11. 11. 2009 13:01 Nový

vyborny clanok

celé vlákno

vyborny clanok

Ventil
Ventil (neregistrovaný) ---.26.broadband11.iol.cz
11. 11. 2009 21:51 Nový

Nadšení následované zklamáním

celé vlákno

O této knihovně jsem se dozvěděl (a začal ji používat) cca před 2 roky. Nadšeně jsem začal generovat přímo sestavy v XLS, po čase jsem toho nechal – uživatelé portálu si začali zvyšovat nároky a na to tato knihovna opravdu není dělaná. Jak už zde bylo uvedeno, jakmile na list vložíte více buněk, nějaké to formátování (ať to opravdu vypadá jako tabulka) či výpočtů (ať využijete význam souboru XLS) tak se dostanete do takových časových a paměťových nároků, že vás přejde chuť. Před časem jsem si stáhnul aktuální verzi, abych se přesvědčil zda už je na tom lépe

Generování do XLS jsem tak vzdal, tedy až do doby až naleznu vhodnou alternativu. PHPExcel je dobrý počin, ale plusy (featury a možnosti formátu XLS) bohužel narážejí na aktivní a efektivní využití. Pokud potřebujete jednoduché tabulky vystačíte si s formáty HTML či PDF. Pokud potřebujete složitější tabulky, myslím že PHPExcel není zrovna košér řešení :-(

Budu vděčen za jakýkoliv odkaz směřující na alternativu k PHPExcel.

Jirka Kosek
11. 11. 2009 22:37 Nový

Re: Nadšení následované zklamáním

celé vlákno
M.
M. (neregistrovaný) ---.eurotel.cz
11. 11. 2009 23:11 Nový

čeština

celé vlákno

vyzkoušel sem mnoho méně náročných knihoven, ale ani jedna neuměla vygenrovat XLS s češtinou a tím sem skončil

Janci
Janci (neregistrovaný) 194.160.28.---
12. 11. 2009 8:46 Nový

Re: čeština

celé vlákno

Ja používam php_writeexcel a so slovenčinou som problém nemal. Takže asi ani so slovenčinou nebude. Stačí skonvertovať text na cp1250.

Janci
Janci (neregistrovaný) 194.160.28.---
12. 11. 2009 8:49 Nový

Re: čeština

celé vlákno

Takže ani s češtinou asi nebude – malo byt :)

Murděj Uktrurný aura:69
12. 11. 2009 8:48 Nový

Re: čeština

celé vlákno

Taky jsem to řešil, nakonec jsem našel způsob jak opatchovat knihovnu z php pear, ale ta zase neumí xlsx.

http://wiki.slfree.net/…do_XLS_v_PHP

Michal Kočárek
29. 11. 2009 0:21 Nový

Export do HTML namísto XLS(X), aneb nativní podpora HTML/XML v Office >= 2000

celé vlákno

Možná toto někomu pomůže. Málokdo ví, že Microsoft Office podporuje jako nativní formát také XML/HTML, a to již od verze 2000. Kupříkladu Excel umí otevřít HTML soubor, a data z první tabulky, kterou najde v tomto souboru, převede do buněk a patřičně oformátuje.

Při troše hraní s Content-Type výstupní hlavičkou, a generováním HTML souboru lze vygenerovat relativně jednoduše z PHP jednolistový „excelovský“ soubor.

PS: Nedávno Microsoft zveřejnil kompletní Office HTML/XML referenční manuál. ( ke stažení na http://msdn.microsoft.com/…e.10%29.aspx ) V tomto manuálu jsou popsané veškeré jemnosti Microsoftího HTML, včetně CSS atributů začínajících na -mso-, a jejich vlastností. Lze se zde dozvědět, jak formátovat odrážky pro Word, zalamování textu pro Excel, atp. A to vše lze použít pro vygenerování HTML souboru, který je poté předhozen Officím programům, a správně načten.

Racky
Racky (neregistrovaný) 193.179.134.---
4. 2. 2011 11:33 Nový

Jde to i neobjektově, jednodušeji, primitivněji, pomocí headeru a HTML

celé vlákno

http://dtbaker.com.au/random-bits/php-easily-generate-an-excel-file.html

Samozřejmě OOP je hezké a PHPExcel jistě umožňuje mnohem víc věcí než "mé" řešení, ale proč to nezkusit..


Jen se nestíhám divit, jak nečitelné Captchy se dají v diskusích vymyslet.

Racky
Racky (neregistrovaný) 193.179.134.---
4. 2. 2011 11:53 Nový

Re: Jde to i neobjektově, jednodušeji, primitivněji, pomocí headeru a HTML

celé vlákno

Dodávám, že pro správnou češtinu je nutno po odeslání headerů dopsat klasicky cca toto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3­.org/TR/xhtml1/­DTD/xhtml1-transitional.dtd">
<html xmlns="http:/­/www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="cs" />

<title>titulek</ti­tle>
</head>

<body>

Zasílat nově přidané příspěvky e-mailem