|
phpExcel是用來操作OfficeExcel文檔的一個php類庫,它基于微軟的OpenXML標準和php語言??梢允褂盟鼇碜x取、寫入不同格式的電子表格。而Codeigniter是一個功能強大的php框架。二者結合就能起到非常棒的效果啦!
1.準備工作
下載phpExcel:http://phpexcel.codeplex.com
這是個強大的Excel庫,這里只演示導出Excel文件的功能,其中的大部分功能可能都用不著。
2.安裝phpExcel到Codeigniter
1)解壓壓縮包里的Classes文件夾中的內容到application/libraries/目錄下,目錄結構如下:
--application/libraries/phpExcel.php
--application/libraries/phpExcel(文件夾)
2)修改application/libraries/phpExcel/IOFactory.php文件
--將其類名從phpExcel_IOFactory改為IOFactory,遵從CI類命名規則。
--將其構造函數改為public
3.安裝完畢,寫一個導出excel的控制器(Controller)
代碼如下:
復制代碼 代碼如下:<?php
classTable_exportextendsCI_Controller{
function__construct()
{
parent :: __construct();
// Hereyoushouldaddsomesortofuservalidation
// topreventstrangersfrompullingyourtabledata
}
functionindex($table_name)
{
$query = $this -> db -> get($table_name);
if(!$query)
returnfalse;
// StartingthephpExcellibrary
$this -> load -> library('phpExcel');
$this -> load -> library('phpExcel/IOFactory');
$objphpExcel = newphpExcel();
$objphpExcel -> getProperties() -> setTitle("export") -> setDescription("none");
$objphpExcel -> setActiveSheetIndex(0);
// Fieldnamesinthefirstrow
$fields = $query -> list_fields();
$col = 0;
foreach($fieldsas$field)
{
$objphpExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, 1, $field);
$col++;
}
// Fetchingthetabledata
$row = 2;
foreach($query -> result()as$data)
{
$col = 0;
foreach($fieldsas$field)
{
$objphpExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, $row, $data -> $field);
$col++;
}
$row++;
}
$objphpExcel -> setActiveSheetIndex(0);
$objWriter = IOFactory :: createWriter($objphpExcel, 'Excel5');
// Sendingheaderstoforcetheusertodownloadthefile
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="Products_' . date('dMy') . '.xls"');
header('Cache-Control:max-age=0');
$objWriter -> save('php://output');
}
}
4.測試
加入數據庫有表名為products,此時可以訪問http://www.yoursite.com/table_export/index/products導出Excel文件了。
php技術:Codeigniter+PHPExcel實現導出數據到Excel文件,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。