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

作者:zccst 



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



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



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

源码见附件 



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

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



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



1,在头部引入三个文件

  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. //引入PHPExcel相关文件
  5. require_once "PHPExcel.php";
  6. require_once 'PHPExcel/IOFactory.php';
  7. require_once 'PHPExcel/Writer/Excel5.php';

2,将数据放入excel表格中

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

3,设置导出的一些參数 

版本号一:

  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. $xlsWriter->save( "php://output" );

版本号二:

  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,添加�附件(非必需)

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

高级主题 

1,excel5与excel2007差别 

zipArchive.php 

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





2,设置暂时文件位置 

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

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





3,设置excel单元格的格式 

过滤 



4,输出有错。 

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

  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() 把文件读入一个字符串。

使用PHPExcel导入导出excel格式文件的更多相关文章

  1. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  2. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...

  3. NPOI 操作数据库中数据的导入导出(Excel.xls文件) 和null数据的处理。

    App.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  4. phpcms 用phpexcel导入导出excel

    html <form method="post" action="?m=content&c=content&a=public_add_excel&q ...

  5. phpexcel 导入导出excel表格

    phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...

  6. 将页面中表格数据导出excel格式的文件(vue)

    近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...

  7. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  8. asp.net core web的导入导出excel功能

    这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...

  9. 将Mysql的一张表导出至Excel格式文件

    将Mysql的一张表导出至Excel格式文件 导出语句 进入mysql数据库,输入如下sql语句: select id, name, age from tablename into outfile ' ...

随机推荐

  1. USB描述符解析-->枚举.

    枚举可以理解为主机按不定的顺序向USB设备讨要设备信息,好给它分配资源,若枚举不成功,就放弃分配资源,免得浪费资源.一般都是使用中断传输方式通信. 常用的描述符有以下几种:01H.设备描述符  02H ...

  2. Pythn中的super用法

    在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: 代码如下: class A: def __init__(self): p ...

  3. C#生成高清缩略图

    /// <SUMMARY> /// 为图片生成缩略图 /// </SUMMARY> /// <PARAM name="phyPath">原图片的 ...

  4. UVALive 5792 Diccionário Portuñol

    字符串匹配问题 有n个a串个m个b串,讲a的前缀和b的后缀粘在一起有多少个不同的新串. 首先求不同的前缀和后缀肯定好求了,就用字典树分别存一下a个倒过来的b. 那个问题就是解决例如,abcd,和bcd ...

  5. php目录分隔符DIRECTORY_SEPARATOR

    在windows我们习惯性的使用“\”作为文件分隔符,但是在linux上系统不认识这个标识,于是就要引入这个php内置变量了:DIRECTORY_SEPARATOR 路径分隔符 windows \ o ...

  6. Hadoop学习历程(三、第一个程序)

    根据之前的操作,我们已经可以正常的启动Hadoop了,关于真正的集群我会在之后进行说明.现在我们来看一下第一个程序吧 1. 在eclipse上建立一个java项目 2. 将 /usr/hadoop/s ...

  7. HTML&CSS基础学习笔记1.18-表格的边框

    今天的内容比较简单~来看看HTML里表格的边框是怎么设置的吧 表格的边框 前面为了方便观察表格单元格的情况,我们给<table>加了border属性.<table>的borde ...

  8. canvas加载图像

    之前按照例子,加载图像,发现加载图像,加载不上去,代码也没有错误,经过几次的尝试:发现需要重复调用下drawImage才可以. <script type="text/javascrip ...

  9. JavaWeb学习笔记--4.EL表达式

    四. 表达式语言(相当于对JSP中对象输出的简化,功能实质上类似) 转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546 表达 ...

  10. Linux/Unix工具与正则表达式的POSIX规范

    http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之 ...