phpexcel
2016-04-13 18:33
381 查看
今天写项目需要将查询结果用php导出为excel文件,查了网上主流的一些做法,发现phpexcel功能很强大,试着模仿着examples写了一个简单的导出excel的php代码
下载最新的phpexcel插件可以上官网查找,这里就不多做说明:http://phpexcel.codeplex.com/
**
1.引入phpexcel插件 ,引入前进行错误检查(也可忽略)
2.创建一个excel,
3.因为项目的excel有特定的格式,所以需要引入一个模板,可提前将模板写好放在摸个目录下,接着引用该模版,引用的方法如下
4.设置文件属性(也可忽略采用默认的格式,暂时没发现什么问题)
5.写数据
6.改写工作薄名称(如果没用可不写)
7.设置打开excel时优先打开的工作薄(默认1)
8.设置页面头信息
9.输出excel的代码
**
1.一定要分清引入的模板是2003的还是2007
2.如果有从数据库读数据再写入时,一定不要有错误信息输出,否则文件无法打开
3.页面也不要有其他任何输出,否则文件无法打开
OK,到此一个简单的excel导出的代码就完成啦,如果还要具体的设置列宽或者颜色背景什么的可以参照api文档。
这里有一个别人写的中文文档,比较老了,但基本的还能用,可以作参考http://www.cnblogs.com/freespider/p/3284828.html
下载最新的phpexcel插件可以上官网查找,这里就不多做说明:http://phpexcel.codeplex.com/
**
excel写入数据及输出过程
**1.引入phpexcel插件 ,引入前进行错误检查(也可忽略)
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //date_default_timezone_set('Europe/London'); define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); if (PHP_SAPI == 'cli') die('This excel should only be run from a Web Browser'); require_once dirname(__FILE__) . '/PHPExcel.php';
2.创建一个excel,
$objPHPExcel = new PHPExcel();
3.因为项目的excel有特定的格式,所以需要引入一个模板,可提前将模板写好放在摸个目录下,接着引用该模版,引用的方法如下
$objReader = PHPExcel_IOFactory::createReader('Excel2007');//如果是引入excel2003,将Excel2007改为Excel5即可,如果不改,则输出的excel会错误无法打开 $objPHPExcel = $objReader->load("模板的路径");
4.设置文件属性(也可忽略采用默认的格式,暂时没发现什么问题)
$objPHPExcel->getProperties() ->setCreator("zly") ->setLastModifiedBy("zly") ->setTitle("zly") ->setSubject("PHPExcel zly Document") ->setDescription("zlydocument for PHPExcel, generated using PHP classes.") ->setKeywords("office PHPExcel php") ->setCategory("zlyresult file");
5.写数据
//setActiveSheetIndex(num) num为要写入的工作薄的位置,如1表示sheet1(暂时不确定) //setCellValue(param1,param2) param1为你要写入数据的位置,param2为要在该位置写的数据 $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('C1', "你好") ->setCellValue('D1',<span style="font-family: Arial, Helvetica, sans-serif;">"你好"</span>) ->setCellValue('F1', <span style="font-family: Arial, Helvetica, sans-serif;">"你好"</span><span style="font-family: Arial, Helvetica, sans-serif;">) </span> ->setCellValue('G1', <span style="font-family: Arial, Helvetica, sans-serif;">"你好"</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
6.改写工作薄名称(如果没用可不写)
$objPHPExcel->getActiveSheet(0)->setTitle('zly');
7.设置打开excel时优先打开的工作薄(默认1)
$objPHPExcel->getActiveSheet(0)->setTitle('zly');
8.设置页面头信息
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // 如果是excel2003,则写header('Content-Type: application/vnd.ms-excel');否则输出的excel无法打开 header('Content-Disposition: attachment;filename="sj.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header ('Pragma: public'); // HTTP/1.0
9.输出excel的代码
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); //如果为excel2003,则改为Excel5 $objWriter->save('php://output');
**
注意点:
**1.一定要分清引入的模板是2003的还是2007
$objReader = PHPExcel_IOFactory::createReader('param'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); // 如果是excel2003,则写header('Content-Type: application/vnd.ms-excel');否则输出的excel无``` $objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//2003用Excel5,2007用Excel2007
2.如果有从数据库读数据再写入时,一定不要有错误信息输出,否则文件无法打开
3.页面也不要有其他任何输出,否则文件无法打开
OK,到此一个简单的excel导出的代码就完成啦,如果还要具体的设置列宽或者颜色背景什么的可以参照api文档。
这里有一个别人写的中文文档,比较老了,但基本的还能用,可以作参考http://www.cnblogs.com/freespider/p/3284828.html
相关文章推荐
- dbms_output.enable()有什么用
- 【算法】PHP实现经典算法(下)
- sun.net.ftp.FtpClient 中文API
- PHP--规范化的文件上传
- PHP简单的操作mysql
- php中mysql连接方式PDO使用详解
- php遍历目录
- PHp向文件中写入数据
- phpMyAdmin配置文件config.inc.php详解
- php变量的几种写法
- PHP处理一个5G文件,使用内存512M的,数据为整形,从大到小排序,优化排序算法
- yii2 安装
- PHP中使用递归函数
- ecshop安装到php5.2版本以上出错,解决方法
- php.ini文件中的include_path设置和$_SERVER['DOCUMENT_ROOT']
- php获取某一年的工作日列表
- php数据库操作
- 解决PHP中文乱码
- 比较php字符串连接的效率
- 实习日志-php-分别用print_r,var_dump,var_export打印数组