<?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>Kamil ÖRS &#187; Apache</title>
	<atom:link href="http://www.kamilors.com/category/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kamilors.com</link>
	<description>Bir programcının anatomisi</description>
	<lastBuildDate>Fri, 17 Sep 2010 17:04:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Apache Poi (MS Office Java API)</title>
		<link>http://www.kamilors.com/apache-poi-ms-office-java-api/</link>
		<comments>http://www.kamilors.com/apache-poi-ms-office-java-api/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 16:59:02 +0000</pubDate>
		<dc:creator>Kamil</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[kütüphane]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[microsoft office]]></category>
		<category><![CDATA[poi]]></category>

		<guid isPermaLink="false">http://www.kamilors.com/?p=214</guid>
		<description><![CDATA[Bazen kullanıcılara raporları Microsoft Office Dökümanıları (Word, Excel, Powerpoint vs.) olarak vermemiz istenir. Bunun için Java&#8217;da kullanabilceğimiz bir çok kütüphane mevcut. Bana göre bu kütüphanelerden en iyisi Apache grubunun yazmış olduğu POI isimli kütüphane. Poi&#8217;nin destek verdiği döküman formatları, Excel, Word, Powerpoint, OpenXML4J, OLE2 Filesystem, OLE2 Document Props, Outlook, Visio ve Publisher. Bu formattaki dokümanları [...]]]></description>
			<content:encoded><![CDATA[<p>Bazen kullanıcılara raporları Microsoft Office Dökümanıları (Word, Excel, Powerpoint vs.) olarak vermemiz istenir. Bunun için Java&#8217;da kullanabilceğimiz bir çok kütüphane mevcut. Bana göre bu kütüphanelerden en iyisi Apache grubunun yazmış olduğu POI isimli kütüphane. Poi&#8217;nin destek verdiği döküman formatları, <strong>Excel</strong>, <strong>Word</strong>, <strong>Powerpoint</strong>, <strong>OpenXML4J</strong>, <strong>OLE2 Filesystem</strong>, <strong>OLE2 Document Props</strong>, <strong>Outlook</strong>, <strong>Visio </strong>ve <strong>Publisher</strong>. Bu formattaki dokümanları okuyabilir ve yazabiliriz.</p>
<p>Apachi Poi&#8217;nin 3.2 versiyonunu <strong>COMPASS </strong>adlı bir projede kullanmaktayım.Şirkette Excel 2007 kullanılsada, Poi Excel satırlarına erişimde <strong>short </strong>türünden değişken kullandığı için  mecburen 32767 satır kullanabiliyorum (Short.MIN_VALUE == -32767 , Short.MAX_VALUE == 32767). İlk başlarda bu pek bir sorun yaratmasa da rapor olarak sunulan veri arttırkça satır sayıları yetmemeye başladı. Bu sorunu başka bir sheet oluşturarak halledebiliriz ama apache, poi&#8217;nin yeni (!) bir sürümünü yayınlamış (version 3.5) ve bu sürümde Excel 2007&#8242;ye de destek vermiş. Şuanki en güncel sürüm ise 3.6 <img src='http://www.kamilors.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Poi Excel Api olarak HSSF  isminde bir kütüphane sunuyor. Bu kütüphanede yukarıda bahsetttiğim gibi satırlara erişim için short tipinde sayılar kullanılıyor. Yeni sürümde bu kütüphaneye ek olarak XSSF isimli bir kütüphane daha eklenmiş. Bu kütüphane OOXML destekleniyor.<span id="more-214"></span></p>
<p>Poi&#8217;nin kullanımı hakkında biraz bilgi vermek gerekirse öncelikle <strong>http://poi.apache.org/</strong> adresinden poi&#8217;nin güncel sürümünü indirin. İndirdiğiniz sıkıştırılmış dosyayı açıktan sonra <strong>/poi-3.6 </strong>, <strong>/poi-3.6/lib</strong> ve <strong>/poi-3.6/ooxml-lib</strong> altındaki jar dosyalarını projenize kütüphane olarak ekleyin.</p>
<p><strong><span style="text-decoration: underline;">Yeni Workbook oluşturma:</span></strong></p>
<p>Yeni workbook oluşturmak için XSSFWorkbook sınıfından yaralanıyoruz.</p>

<div class="wp_codebox"><table><tr id="p2146"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p214code6"><pre class="java" style="font-family:monospace;">XSSFWorkbook workbook <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XSSFWorkbook<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong><span style="text-decoration: underline;">Oluşturulan Workbook&#8217;a yeni Sheet Eklemek:</span></strong></p>

<div class="wp_codebox"><table><tr id="p2147"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p214code7"><pre class="java" style="font-family:monospace;">XSSFSheet sheet <span style="color: #339933;">=</span> workbook.<span style="color: #006633;">createSheet</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sheet Adı&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Bu şekilde çalışma kitabına istediğimiz kadar sheet ekleyebiliriz.</p>
<p><strong><span style="text-decoration: underline;">Sheet&#8217;e yeni satır ve hücre eklemek:</span></strong></p>

<div class="wp_codebox"><table><tr id="p2148"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p214code8"><pre class="java" style="font-family:monospace;">XSSFRow row <span style="color: #339933;">=</span> sheet.<span style="color: #006633;">createRow</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
XSSFCell cell <span style="color: #339933;">=</span> row.<span style="color: #006633;">createCell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
cell.<span style="color: #006633;">setCellValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Merhaba Dünya&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Bu kodlar A1 hücresine Merhaba dünya yazıyor. createRow ve createCell fonksiyonların integer olarak gönderdiğimiz sayılar satır ve sütün numaralarını temsil ediyor. Satır ve sütünları 0  dan başladığını kabul ediyoruz. Örn  10&#8242;a 15 değerleri K16 hücresini temsil ediyor.</p>
<p><strong><span style="text-decoration: underline;">Oluşturulan Workbook&#8217;u dosyaya yazmak:</span></strong></p>

<div class="wp_codebox"><table><tr id="p2149"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p214code9"><pre class="java" style="font-family:monospace;"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a> file <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span>  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>demo<span style="color: #000099; font-weight: bold;">\\</span>demo.xlsx&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileOutputStream</span></a> outputStream <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileOutputStream</span></a><span style="color: #009900;">&#40;</span>file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
workbook.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>outputStream<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
outputStream.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong><span style="text-decoration: underline;">toparlarsak:</span></strong></p>

<div class="wp_codebox"><table><tr id="p21410"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p214code10"><pre class="java" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a> file <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span>  <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">File</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>demo<span style="color: #000099; font-weight: bold;">\\</span>demo.xlsx&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileOutputStream</span></a> outputStream <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afileoutputstream+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">FileOutputStream</span></a><span style="color: #009900;">&#40;</span>file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            XSSFWorkbook workbook <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> XSSFWorkbook<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            XSSFSheet sheet <span style="color: #339933;">=</span> workbook.<span style="color: #006633;">createSheet</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Kamil ÖRS&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            XSSFRow row <span style="color: #339933;">=</span> sheet.<span style="color: #006633;">createRow</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            XSSFCell cell <span style="color: #339933;">=</span> row.<span style="color: #006633;">createCell</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            cell.<span style="color: #006633;">setCellValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Merhaba Dünya&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            workbook.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>outputStream<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            outputStream.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Exception</span></a> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">System</span></a>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Error: &quot;</span> <span style="color: #339933;">+</span> e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>İşte bu kadar. Bu örnekte dikkat ettiyseniz OOXML destekleyen sınıfları kullandık. Eğer ki Office 2003 ve daha düşük sürümler için excel çıktısı oluşturacaksanız buradaki XSSF ile başlayan sınıflar yerine HSSF ile başlayanları kullanmanız lazım. Ayrıca createRow ve createCell fonksiyonlarınada integer yerine short türünden parametreler göndermeniz gerekiyor.</p>
<p style="text-align: center;"><img class="size-full wp-image-232 aligncenter img" title="poi_demo" src="http://www.kamilors.com/wp-content/uploads/poi_demo.jpg" alt="poi_demo" width="515" /></p>
<p>Bir dahaki sefere Poi ile hücrelere nasıl biçim verebileceğimize bakarız <img src='http://www.kamilors.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kamilors.com/apache-poi-ms-office-java-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

