• 使用PHPExcel导入导出excel格式文件


    使用PHPExcel导入导出excel格式文件 
    作者:zccst 

    因为导出使用较多,以下是导出实现过程。 

    第一步,将PHPExcel的源码拷贝到项目的lib下 

    文件包含:PHPExcel.php 和 目录PHPExcel 
    源码见附件 

    注1:源码是zip格式,能在windows和linux通用。 
    注2:PHPExcel.zip是干净代码,能够直接引用。PHPExcel2.zip有svn记录,不适合直接引用。 

    第二步:在须要导出的handler页面中引用 

    1,在头部引入三个文件 
    Php代码  收藏代码
    1. //环境变量设置(新增PHPExcel)  
    2. set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path());  
    3. //注:在yii中,也能够直接Yii::import(“application.lib.PHPExcel.*”);  
    4.   
    5. //引入PHPExcel相关文件  
    6. require_once "PHPExcel.php";  
    7. require_once 'PHPExcel/IOFactory.php';  
    8. require_once 'PHPExcel/Writer/Excel5.php';  


    2,将数据放入excel表格中 
    Php代码  收藏代码
    1. //新建  
    2. $resultPHPExcel = new PHPExcel();  
    3.   
    4. //设置參数  
    5.   
    6. //设值  
    7. $resultPHPExcel->getActiveSheet()->setCellValue('A1''季度');  
    8. $resultPHPExcel->getActiveSheet()->setCellValue('B1''名称');  
    9. $resultPHPExcel->getActiveSheet()->setCellValue('C1''数量');  
    10. $i = 2;  
    11. foreach($data as $item){  
    12.     $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i$item['quarter']);  
    13.     $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i$item['name']);  
    14.     $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i$item['number']);  
    15.     $i ++;  
    16. }  


    3,设置导出的一些參数 
    版本号一: 
    Php代码  收藏代码
    1. //设置导出文件名称  
    2. $outputFileName = 'total.xls';  
    3. $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);  
    4. //ob_start();  ob_flush();  
    5. header("Content-Type: application/force-download");  
    6. header("Content-Type: application/octet-stream");  
    7. header("Content-Type: application/download");  
    8. header('Content-Disposition:inline;filename="'.$outputFileName.'"');  
    9. header("Content-Transfer-Encoding: binary");  
    10. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
    11. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");  
    12. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
    13. header("Pragma: no-cache");  
    14.   
    15. $xlsWriter->save( "php://output" );  


    版本号二: 
    Php代码  收藏代码
    1. $writer = PHPExcel_IOFactory::createWriter($resultPHPExcel'Excel5');  
    2. $writer->setTempDir(Yii::app()->basePath.'/runtime');  
    3. $filename = "单.xls";  
    4. header("Pragma: public");  
    5. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
    6. header("Content-Type: application/force-download");  
    7. header('Content-Type: application/vnd.ms-excel');  
    8. header('Content-Disposition: attachment;filename="' . $filename . '"');  
    9. header('Cache-Control: max-age=0');  
    10. $writer->save('php://output');  


    4,添加�附件(非必需) 
    Php代码  收藏代码
    1. $objPHPExcel    = new PHPExcel();  
    2. $objReader = PHPExcel_IOFactory::createReader('Excel5');  
    3. $objReader->setReadDataOnly(true);  
    4.   
    5. foreach($data2 as $item){  
    6.     $fp = dirname(__FILE__) . "/../../../" . $item['file_path'] ;  
    7.     $objPHPExcel = $objReader->load($fp);  
    8.     $objWorksheet = $objPHPExcel->getActiveSheet();  
    9.     $resultPHPExcel->addExternalSheet($objWorksheet);  
    10. }  



    高级主题 
    1,excel5与excel2007差别 
    zipArchive.php 
    有非常多php(php.ini)不支持excel2007,所以建议使用excel5。 


    2,设置暂时文件位置 
    假设报暂时文件名称错,则更改暂时文件路径 
    xlsWriter.setDirName(Yii::app()->basePath.'/runtime'); 


    3,设置excel单元格的格式 
    过滤 

    4,输出有错。 
    默认$xlsWriter->save( "php://output" );可能由于缓存不够大,而显示不完整,所以做个中转,方式例如以下: 
    Php代码  收藏代码
    1. $finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls';  
    2. $xlsWriter->save($finalFileName);  
    3. echo file_get_contents($finalFileName);  //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。  
  • 相关阅读:
    查看Oracle字符集
    Oracle备份还原表须知
    Oracle级联删除,删除用户的同时,将所分配到的表空间同时删除
    python logging模块(1) Marathon
    pycharm中调试django程序 Marathon
    sqlite数据表的增删改查操作 Marathon
    ubuntu 18.04配置固定ip Marathon
    django项目报错request请求不能处理问题 Marathon
    systemd.service配置 Marathon
    shell脚本学习之6小时搞定(1)入门 Marathon
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3895545.html
Copyright © 2020-2023  润新知