<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[PHP导出MySQL数据到Excel文件]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 26 Jun 2010 04:30:09 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	经常会碰到需要从数据库中导出数据到Excel文件，用一些开源的类库，比如PHPExcel，确实比较容易实现，但对大量数据的支持很不好，很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法，直接向浏览器输出Excel文件。<br/><br/><br/><div class="code">&lt;?php<br/>// 输出Excel文件头，可把user.csv换成你要的文件名<br/>header(&#039;Content-Type: application/vnd.ms-excel&#039;);<br/>header(&#039;Content-Disposition: attachment;filename=&quot;user.csv&quot;&#039;);<br/>header(&#039;Cache-Control: max-age=0&#039;);<br/> <br/>// 从数据库中获取数据，为了节省内存，不要把数据一次性读到内存，从句柄中一行一行读即可<br/>$sql = &#039;select * from tbl where ……&#039;;<br/>$stmt = $db-&gt;query($sql);<br/> <br/>// 打开PHP文件句柄，php://output 表示直接输出到浏览器<br/>$fp = fopen(&#039;php://output&#039;, &#039;a&#039;);<br/> <br/>// 输出Excel列名信息<br/>$head = array(&#039;姓名&#039;, &#039;性别&#039;, &#039;年龄&#039;, &#039;Email&#039;, &#039;电话&#039;, &#039;……&#039;);<br/>foreach ($head as $i =&gt; $v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// CSV的Excel支持GBK编码，一定要转换，否则乱码<br/>&nbsp;&nbsp;&nbsp;&nbsp;$head&#91;$i&#93; = iconv(&#039;utf-8&#039;, &#039;gbk&#039;, $v);<br/>&#125;<br/> <br/>// 将数据通过fputcsv写到文件句柄<br/>fputcsv($fp, $head);<br/> <br/>// 计数器<br/>$cnt = 0;<br/>// 每隔$limit行，刷新一下输出buffer，不要太大，也不要太小<br/>$limit = 100000;<br/> <br/>// 逐行取出数据，不浪费内存<br/>while ($row = $stmt-&gt;fetch(Zend_Db::FETCH_NUM)) &#123;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;$cnt ++;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($limit == $cnt) &#123; //刷新一下输出buffer，防止由于数据过多造成问题<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ob_flush();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flush();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cnt = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;foreach ($row as $i =&gt; $v) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$row&#91;$i&#93; = iconv(&#039;utf-8&#039;, &#039;gbk&#039;, $v);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;fputcsv($fp, $row);<br/>&#125;</div><br/><br/>简单易用，非常节省内存，不依赖第三方类库。<br/><br/>来源：http://www.fuchaoqun.com/2010/05/php-export-mysql-excel/
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP导出MySQL数据到Excel文件]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>