<?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>Coder Zone @ KuźniaSukcesu.net &#187; generator</title>
	<atom:link href="http://coder.kuzniasukcesu.net/tag/generator/feed/" rel="self" type="application/rss+xml" />
	<link>http://coder.kuzniasukcesu.net</link>
	<description>Strefa programistów</description>
	<lastBuildDate>Sat, 03 Oct 2009 11:44:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Generowanie arkuszy Excela w PHP</title>
		<link>http://coder.kuzniasukcesu.net/2009/07/07/generowanie-arkuszy-excela-w-php/</link>
		<comments>http://coder.kuzniasukcesu.net/2009/07/07/generowanie-arkuszy-excela-w-php/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 07:02:01 +0000</pubDate>
		<dc:creator>Bartek</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[writer]]></category>
		<category><![CDATA[xls]]></category>
		<category><![CDATA[xlsx]]></category>

		<guid isPermaLink="false">http://coder.kuzniasukcesu.net/?p=21</guid>
		<description><![CDATA[Implementując ostatnio jedną z funkcji portalu potrzebowałem sobie wygenerować plik w formacie XLS. Chodziło mi o przygotowanie pliku XLS w locie, po kliknięciu przez użytkownika przycisku i podanie tak stworzonego pliku użytkownikowi do ściągnięcia.
Znalazłem sporo prostych skryptów, które miały jedną wspólną cechę &#8211; nie działały dobrze. Generowały albo uszkodzone pliki XLS, albo stosowały różne obejścia [...]]]></description>
			<content:encoded><![CDATA[<p>Implementując ostatnio jedną z funkcji portalu potrzebowałem sobie wygenerować plik w formacie XLS. Chodziło mi o przygotowanie pliku XLS w locie, po kliknięciu przez użytkownika przycisku i podanie tak stworzonego pliku użytkownikowi do ściągnięcia.</p>
<p>Znalazłem sporo prostych skryptów, które miały jedną wspólną cechę &#8211; nie działały dobrze. Generowały albo uszkodzone pliki XLS, albo stosowały różne obejścia (np. generowanie tabeli w HTML i zapisanie jej z rozszerzeniem XLS <img src='http://coder.kuzniasukcesu.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>W końcu udało mi się znaleźć chyba idealną bibliotekę.</p>
<h3>PHPExcel</h3>
<p><a href="http://www.codeplex.com/PHPExcel" target="_blank">PHPExcel</a> jest to rozbudowana biblioteka (zajmuje około 5 MB) napisana w PHP do obsługi plików Excela. Nie dość, że zapisuje pliki XLS, to jeszcze potrafi je odczytywać. W dodatku obsługuje różne wersje dokumentów XLS.</p>
<p>Poniżej sposób, który wykorzystałem przy generowaniu przykładowego pliku Excela oraz wyświetleniu użytkownikowi okna pobierania pliku.</p>
<pre><span style="color: #888888;"><span style="color: #ff0000;">&lt;?php</span><em>
// PHPExcel</em></span>
<span style="color: #0000ff;">include</span> <span style="color: #339966;">'PHPExcel.php'</span>;
<span style="color: #888888;"><em>// PHPExcel_IOFactory</em></span>
<span style="color: #0000ff;">include</span> <span style="color: #339966;">'PHPExcel/IOFactory.php'</span>;

$objPHPExcel = <span style="color: #0000ff;">new</span> PHPExcel();
$objPHPExcel-&gt;setActiveSheetIndex(<span style="color: #ff6600;">0</span>); <em><span style="color: #c0c0c0;">// ustawienie aktualnego arkusza</span></em>

<span style="color: #c0c0c0;"><em>// tu wypełniamy komórki arkusza
</em></span>$objPHPExcel-&gt;getActiveSheet()-&gt;setCellValueByColumnAndRow($Column, $Row, $Value);
<em><span style="color: #c0c0c0;">// (...)</span></em><em><span style="color: #c0c0c0;">

</span><span style="color: #c0c0c0;">// wygenerowanie u użytkownika okna zapisu pliku o podanej nazwie</span></em>
header(<span style="color: #339966;">'Content-Type: application/vnd.ms-excel'</span>);
header(<span style="color: #339966;">'Content-Disposition: attachment;filename="'</span> . $NazwaPliku . <span style="color: #339966;">'"'</span>);
header(<span style="color: #339966;">'Cache-Control: max-age=0'</span>);

<span style="color: #c0c0c0;"><em>// zapis pliku do katalogu tymczasowego i wysłanie użytkownikowi do ściągnięcia</em></span>
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, <span style="color: #339966;">'Excel5'</span>); <em><span style="color: #c0c0c0;">// albo 'Excel2007'</span></em>
$objWriter-&gt;setTempDir(<span style="color: #339966;">"./"</span>);
$objWriter-&gt;save(<span style="color: #339966;">'php://output'</span>);
<span style="color: #ff0000;">?&gt;</span></pre>
<p>Pliki generują się bezproblemowo &#8211; nie spotkałem się jeszcze z sytuacją, żeby plik był uszkodzony albo jakichś danych nie było. Jak widać powyżej, można generować zarówno pliki dla starszych wersji Office&#8217;a (XLS), jak i dla Office 2007 (XLSX). Tej drugiej możliwości nie testowałem, ale polecam przejrzenie dokumentacji, która jest całkiem przystępnie opracowana i okraszona przykładami.</p>
<p>Biblioteka jest darmowa, <strong>na licencji LGPL</strong>, zatem można ją swobodnie wykorzystywać do większości zastosowań.</p>
]]></content:encoded>
			<wfw:commentRss>http://coder.kuzniasukcesu.net/2009/07/07/generowanie-arkuszy-excela-w-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
