php操作excel文件 基于phpexcel


Posted in PHP onJuly 02, 2010

所以工作的第一步就是要将数据从excel中取出来。这里我使用到了一个开源php处理excel类:phpexcel. 该项目的详细信息 http://phpexcel.codeplex.com/ 。
我目前使用的是phpexcel1.7.3版本, 解压缩后里面有一个PHPExcel和PHPExcel.php文件。
我们主要使用那个PHP文件。见下图文件目录结构
php操作excel文件 基于phpexcel

这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持。于是乎我就将它转化为2003。感觉支持地很好。
下面介绍一下具体的使用:

require_once('./phpexcel1.7.3/PHPExcel.php'); 
$php_excel_obj = new PHPExcel(); 
$php_reader = newPHPExcel_Reader_Excel2007(); if(!$php_reader->canRead($file_name)) 
{ 
$php_reader= new PHPExcel_Reader_Excel5(); 
if(!$php_reader->canRead($file_name)) 
{ 
echo'NO Excel!'; 
} 
} 
$php_excel_obj = $php_reader->load($file_name); 
$current_sheet =$php_excel_obj->getSheet(0);

上面的主要功能是初始化相关的excel类,并装载excel第一个sheet

$all_column =$current_sheet->getHighestColumn();
$all_row =$current_sheet->getHighestRow();

以上分别获得该表格的最大列值(字母表示如:‘G'),和最大的行数(数值表示)

下面将使用循环来讲excel里面的数据读到excel中:

$all_arr = array(); 
$c_arr = array(); //字符对照表 
for($r_i = 1; $r_i<=$all_row; $r_i++) 
{ 
$c_arr= array(); 
for($c_i= 'A'; $c_i<= 'B'; $c_i++) 
{ 
$adr= $c_i . $r_i; 
$value= $current_sheet->getCell($adr)->getValue(); 
if($c_i== 'A' && empty($value) ) 
break; 
if(is_object($value)) 
$value= $value->__toString(); 
$c_arr[$c_i]= $value; 
} 
$c_arr&& $all_arr[] = $c_arr; 
}

下面简单地介绍一下phpexcel的写操作,这个操作经常用于将数据库中的数据导入到excel中,便于展示和做成更美观的效果。

require_once('./phpexcel1.7.3/PHPExcel.php'); $excel_obj = new PHPExcel(); 
$objWriter = newPHPExcel_Writer_Excel5($excel_obj); 
$excel_obj->setActiveSheetIndex(0); 
$act_sheet_obj=$excel_obj->getActiveSheet(); 
$act_sheet_obj->setTitle('sheet'); 
$act_sheet_obj->setCellValue('A1', '字符串内容'); 
$act_sheet_obj->setCellValue('A2', 26); 
$file_name = "output.xls"; 
$objWriter->save($file_name);

代码很简单, 首先初始化相关的excel写类,然后写入数据,最后保存为xls文件。
输出的效果见图
php操作excel文件 基于phpexcel
PHP 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
关于php支持分块与断点续传文件下载功能代码
May 09 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
使用XHGui来测试PHP性能的教程
Jul 03 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
May 28 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 #PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 #PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 #PHP
PHP 反向排序和随机排序代码
Jun 30 #PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 #PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 #PHP
PHP字符串处理的10个简单方法
Jun 30 #PHP
You might like
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
网络维护管理员的自我评价分享
2013/11/11 职场文书
水电站项目建议书
2014/05/12 职场文书
中华魂演讲稿
2014/05/13 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL