Codeigniter利用PHPExcel导出Excel文件
1.准备工作
下载PHPExcel:http://phpexcel.codeplex测试数据
这是个强大的Excel库,这里只演示导出Excel文件的功能,其中的大部分功能可能都用不着.
2. 安装PHPExcel到Codeigniter
1) 解压压缩包里的Classes文件夹中的内容到applicationlibraries目录下,目录结构如下:
-- applicationlibrariesPHPExcel.php
-- applicationlibrariesPHPExcel (文件夹)
2)修改applicationlibrariesPHPExcelIOFactory.php 文件
-- 将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则.
-- 将其构造函数改为public
3. 安装完毕,写一个导出excel的控制器(Controller),代码如下:
class Table_export extends CI_Controller { function __construct() { parent::__construct(); // Here you should add some sort of user validation // to prevent strangers from pulling your table data } function index( $table_name ) { $query = $this ->db->get( $table_name ); if (! $query ) return false; // Starting the PHPExcel library $this ->load->library( 'PHPExcel' ); $this ->load->library( 'PHPExcel/IOFactory' ); $objPHPExcel = new PHPExcel(); $objPHPExcel ->getProperties()->setTitle( "export" )->setDescription( "none" ); $objPHPExcel ->setActiveSheetIndex(0); // Field names in the first row $fields = $query ->list_fields(); $col = 0; foreach ( $fields as $field ) { $objPHPExcel ->getActiveSheet()->setCellValueByColumnAndRow( $col , 1, $field ); $col ++; } // Fetching the table data $row = 2; foreach ( $query ->result() as $data ) { $col = 0; foreach ( $fields as $field ) { $objPHPExcel ->getActiveSheet()->setCellValueByColumnAndRow( $col , $row , $data -> $field ); $col ++; } $row ++; } $objPHPExcel ->setActiveSheetIndex(0); $objWriter = IOFactory::createWriter( $objPHPExcel , 'Excel5' ); // Sending headers to force the user to download the file 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' ); } }方法二,代码如下:
Excel Plugin The following plugin will generate a tab-delimited file, and feed it to the client as an Excel file. $this ->load->plugin( 'to_excel' ); $this ->db->use_table( 'tablename' ); $this ->db->select( 'field1' , 'field2' ); // run joins, order by, where, or anything else here $query = $this ->db->get(); to_excel( $query , [ 'filename' ]); // filename is optional, without it, the plugin will default to 'exceloutput' So you could run: to_excel( $query , 'myfile' ); // outputs myfile.xls to_excel( $query ); // outputs exceloutput.xls // you could also use a model here to_excel( $this ->model_name->functioncall()); /system/plugins/to_excel_pi.php <?php if (!defined( 'BASEPATH' )) exit ( 'No direct script access allowed' ); /* * Excel library for Code Igniter applications * Author: Derek Allard, Dark Horse Consulting, HdhCmsTestdarkhorse.to, April 2006 */ function to_excel( $query , $filename = 'exceloutput' ) { $headers = '' ; // just creating the var for field headers to append to below $data = '' ; // just creating the var for field data to append to below $obj =& get_instance(); $fields = $query ->field_data(); if ( $query ->num_rows() == 0) { echo '<p>The table appears to have no data.</p>' ; } else { foreach ( $fields as $field ) { $headers .= $field ->name . "t" ; } foreach ( $query ->result() as $row ) { $line = '' ; foreach ( $row as $value ) { if ((!isset( $value )) OR ( $value == "" )) { $value = "t" ; } else { $value = str_replace ( '"' , '""' , $value ); $value = '"' . $value . '"' . "t" ; } $line .= $value ; } $data .= trim( $line ). "n" ; } $data = str_replace ( "r" , "" , $data ); header( "Content-type: application/x-msdownload" ); header( "Content-Disposition: attachment; filename=$filename.xls" ); echo "$headersn$data" ; } } ?>查看更多关于Codeigniter利用PHPExcel导出Excel文件 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30099