<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IMS Blog - blog o modernom programovaní od Tibor Piňo &#187; reader</title>
	<atom:link href="http://ims.rockretail.com/tag/reader/feed/" rel="self" type="application/rss+xml" />
	<link>http://ims.rockretail.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Thu, 18 Feb 2010 10:11:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ako čítať excel .xls súbory</title>
		<link>http://ims.rockretail.com/2009/01/24/ako-citat-excel-xls-subory/</link>
		<comments>http://ims.rockretail.com/2009/01/24/ako-citat-excel-xls-subory/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 12:50:01 +0000</pubDate>
		<dc:creator>Tibor Piňo</dc:creator>
				<category><![CDATA[Tipy a triky]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[xls]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[V dnešnom článku si ukážeme, akým spôsobom môžeme pomocou CakePHP prečítať obsah excelovského .xls súboru.

Určite sa všetci zhodneme na tom, že kancelársky balík Microsoft Office je najúspešnejšou kancelárskou aplikáciou, a preto určite v mnohých prípadoch narazíme na situáciu, kedy budeme potrebovať prečítať obsah excel súboru s príponou .xls V tomto článku si ukážeme podrobný návod, [...]]]></description>
			<content:encoded><![CDATA[<p>V dnešnom článku si ukážeme, akým spôsobom môžeme pomocou CakePHP prečítať obsah excelovského .xls súboru.</p>
<p><span id="more-58"></span></p>
<p>Určite sa všetci zhodneme na tom, že kancelársky balík Microsoft Office je najúspešnejšou kancelárskou aplikáciou, a preto určite v mnohých prípadoch narazíme na situáciu, kedy budeme potrebovať prečítať obsah excel súboru s príponou .xls V tomto článku si ukážeme podrobný návod, ako takúto situáciu vyriešiť.</p>
<h2>PHP excel reader</h2>
<p>Na čítanie .xls súboru budeme využívať php knižnicu <a href="http://sourceforge.net/projects/phpexcelreader">php excel reader</a> Na oficiálnych stránkach moc informácií nenájdete, avšak všetky potrebné informácie aj s ukážkovými príkladmi sa dajú nájsť v stiahnuteľnom súbore. My si však túto knižnicu upravíme pre potreby CakePHP a vytvoríme z nej komponentu.</p>
<h2>PHP excel reader komponenta</h2>
<p>Samotnú komponentu umiestníme do adresára <em>app/controller­s/components</em> do súboru <em>spreadsheet.php</em>. Nesmieme však zabudnúť aj na priložený súbor <em>oleread.inc</em> (je súčasťou stiahnuteľného balíka na oficiálnych stránkach excel readeru), ktorý daná knižnica potrebuje k svojej činnosti a musíme ho taktiež umiestniť do adresára <em>components</em>. Nekompletný kód našej komponenty v súbore <em>app/controller­s/components/spre­adsheet.php</em> by vypadal následovne</p>
<pre><code>require_once 'oleread.inc';

class SpreadsheetComponent
{
     //obsah komponenty
}</code></pre>
<p>Následne musíme danú komponentu importovať v controlleri, ktorý ju bude používať. Náš controller pomenujeme <em>DocumentsContro­ller</em> a umiestníme ho do súboru <em>app/controller­s/documents_con­troller.php</em>. Kód controlleru by vypadal následovne</p>
<pre><code>class DocumentsController extends AppController {

    var $name = 'Documents';
    var $helpers = array('Html', 'Form');
    var $components = array('spreadsheet');
}</code></pre>
<p>Po vytvorení komponenty a jej inicializovaní máme všetko pripravené a môžeme sa pustiť do čítania súboru. Kód pre čítanie .xls súboru by vypadal následovne</p>
<pre><code>class DocumentsController extends AppController {

    var $name = 'Documents';
    var $helpers = array('Html', 'Form');
    var $components = array('spreadsheet');
    var $xsl = 'spreadsheet.xls';
    var $xsl_path = 'files';

    function read() {

        //nastavime vystupne kodovanie citanych dat
        $this-&gt;spreadsheet-&gt;setUTFEncoder('iconv');
        $this-&gt;spreadsheet-&gt;setOutputEncoding('utf-8');

        //urcime subor, ktory budeme citat, v nasom pripade umiestneny v adresari app/webroot/files
        $this-&gt;spreadsheet-&gt;read($this-&gt;xsl_path.DS.$this-&gt;xsl);

        //samotne citanie .xls suboru
        for ($i = 1; $i &lt;=$this-&gt;spreadsheet-&gt;sheets[0]['numRows']; $i++) {

             //bunka na riadku $i v stlpci 1
             echo $this-&gt;spreadsheet-&gt;sheets[0]['cells'][$i][1];

             //bunka na riadku $i v stlpci 2
             echo $this-&gt;spreadsheet-&gt;sheets[0]['cells'][$i][2];

        }
    }
}</code></pre>
<p>Ako môžeme vidieť, práca s knižnicou je veľmi jednoduchá a nepotrebuje žiadne bližšie vysvetlenie. Akurát treba spomenúť, že je potrebné nastaviť výstupné kódovanie čítaných dát v závislosti na tom, aké kódovanie používa naša aplikácia. V našom prípade sme nastavili kódovanie <em>utf-8</em>.</p>
<p>Týmto je náš článok u konca. Knižnica je veľmi jednoduchá na použitie a určite ju v mnohých prípadoch úspešne využijeme. Avšak musím spomenúť, že .xls formát od microsoftu nie je otvoreným formátom (aspoň v dobe poslednej aktualizácie tejto knižnice nebol) a preto sa môžeme stretnúť aj s problémami so správnym čítaním údajov z .xls súborov. Avšak i napriek menším nedostatkom môžeme tuto knižnicu označiť za veľmi vydarenú.</p>
<p>Rád uvítam vaše nápady a pripomienky ohľadne témy .xls v php.</p>
<p>Na stiahnutie: <a href="http://ims.rockretail.com/wp-content/uploads/2009/01/spreadsheet-cakephp-component.zip">spreadsheet-cakephp-component</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ims.rockretail.com/2009/01/24/ako-citat-excel-xls-subory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
