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

2023-02-15,,,,

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

作者:zccst 

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

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

文件包含:PHPExcel.php 和 目录PHPExcel 

源码见附件 

注1:源码是zip格式,能在windows和linux通用。 

注2:PHPExcel.zip是干净代码,能够直接引用。PHPExcel2.zip有svn记录,不适合直接引用。 

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

1,在头部引入三个文件

    //环境变量设置(新增PHPExcel)
    set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path());
    //注:在yii中,也能够直接Yii::import(“application.lib.PHPExcel.*”);
    //引入PHPExcel相关文件
    require_once "PHPExcel.php";
    require_once 'PHPExcel/IOFactory.php';
    require_once 'PHPExcel/Writer/Excel5.php';

2,将数据放入excel表格中

    //新建
    $resultPHPExcel = new PHPExcel();
    //设置參数
    //设值
    $resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度');
    $resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称');
    $resultPHPExcel->getActiveSheet()->setCellValue('C1', '数量');
    $i = 2;
    foreach($data as $item){
    $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']);
    $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']);
    $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']);
    $i ++;
    }

3,设置导出的一些參数 

版本号一:

    //设置导出文件名称
    $outputFileName = 'total.xls';
    $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);
    //ob_start();  ob_flush();
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header('Content-Disposition:inline;filename="'.$outputFileName.'"');
    header("Content-Transfer-Encoding: binary");
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: no-cache");
    $xlsWriter->save( "php://output" );

版本号二:

    $writer = PHPExcel_IOFactory::createWriter($resultPHPExcel, 'Excel5');
    $writer->setTempDir(Yii::app()->basePath.'/runtime');
    $filename = "单.xls";
    header("Pragma: public");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="' . $filename . '"');
    header('Cache-Control: max-age=0');
    $writer->save('php://output');

4,添加�附件(非必需)

    $objPHPExcel    = new PHPExcel();
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
    $objReader->setReadDataOnly(true);
    foreach($data2 as $item){
    $fp = dirname(__FILE__) . "/../../../" . $item['file_path'] ;
    $objPHPExcel = $objReader->load($fp);
    $objWorksheet = $objPHPExcel->getActiveSheet();
    $resultPHPExcel->addExternalSheet($objWorksheet);
    }

高级主题 

1,excel5与excel2007差别 

zipArchive.php 

有非常多php(php.ini)不支持excel2007,所以建议使用excel5。 

2,设置暂时文件位置 

假设报暂时文件名称错,则更改暂时文件路径 

xlsWriter.setDirName(Yii::app()->basePath.'/runtime'); 

3,设置excel单元格的格式 

过滤 

4,输出有错。 

默认$xlsWriter->save( "php://output" );可能由于缓存不够大,而显示不完整,所以做个中转,方式例如以下:

    $finalFileName = (Yii::app()->basePath.'/runtime/'.time().'.xls';
    $xlsWriter->save($finalFileName);
    echo file_get_contents($finalFileName);  //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。

使用PHPExcel导入导出excel格式文件的相关教程结束。

《使用PHPExcel导入导出excel格式文件.doc》

下载本文的Word格式文档,以方便收藏与打印。