ThinkPHP3.2.3接入PHPExcel1.8.0控件导出Excel报表文件处理方法

实现步骤:

一:在http://phpexcel.codeplex.com/下载最新PHPExcel

将PHPExcel文件夹和PHPExcel.php放入下面的目录内

PHPExcel.php更名为PHPExcel.class.php。

路径:ThinkPHP\Library\Org\Util\


二:下方为控制器代码

//引入PHPExcel类
import("Org.Util.PHPExcel");

//放开PHP超时限制及设置内存
set_time_limit(0);
ini_set("memory_limit", "1024M");

//设置缓存方式
$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;  
$cacheSettings = array();  
\PHPExcel_Settings::setCacheStorageMethod($cacheMethod,$cacheSettings);

// 实例化PHPExcel
$PHPExcelObj = new \PHPExcel();

// 设置excel属性
$PHPExcelObj -> getProperties() -> setCreator("JAMES")
             -> setlastModifiedBy("JAMES")
             -> setTitle("zltrans")
             -> setSubject("Dorder")
             -> setDescription("Dorder List")
             -> setKeywords("Dorder")
             -> setCategory("Test result file");

if($re['status'] == 1){
    $PHPExcelObj -> setActiveSheetIndex(0)
    -> setCellValue('A1','序号')
    -> setCellValue('B1','城市名')
    -> setCellValue('C1',$countTypeName);

    $c = 1;
    $sort = 0;
    $excelName = '';

    foreach ($re['response']['rows'] as $key => $value) {
        $c++;
        $sort++;
        $PHPExcelObj -> setActiveSheetIndex(0) -> setCellValue('A'.$c,$sort);//序号
        $PHPExcelObj -> setActiveSheetIndex(0) -> setCellValue('B'.$c,$value['areaname']);//城市名
        $PHPExcelObj -> setActiveSheetIndex(0) -> setCellValue('C'.$c,$value['num']);//揽/派件量
        $excelName = '-省份报表-';
    }
}

// 将Excel文件保存到框架指定目录
// import("Org.Util.PHPExcel.IOFactory");
// $ObjWriter = \PHPExcel_IOFactory::createWriter($PHPExcelObj,'Excel2007');
// $filelName = iconv('utf-8','gb2312',$excelName);                 //利用Iconv函数对文件名进行重新编码
// $ObjWriter -> save('Public/ReportForms/'.$excelName);


// 导出到本地
$objWriter= \PHPExcel_IOFactory::createWriter($PHPExcelObj,'Excel2007');
$filename = $excelName.'.xls';
ob_end_clean();//清除缓存以免乱码出现
header('Content-Type: application/vnd.ms-excel');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$objWriter -> save('php://output');die;



注意,使用直接导出Excel文件,前端页面需要使用href get传参的方式,Ajax传参会出现问题。

20161222174701999.png

点赞

发表评论