PHPEXCEL 使用小记


Posted in PHP onJanuary 06, 2013

首先是使用PHP Reader 读取Excle内容:

require("https://3water.com/PHPExcel/Classes/PHPExcel.php"); 
$file = "D:\\datas.xlsx"; 
if(!file_exists($file)){ 
die("no file found in {$file}"); 
} 
$datasReader = PHPExcel_IOFactory::load($file); 
$sheets = $datasReader->getAllSheets(); 
//如果有多个工作簿 
$countSheets = count($sheets); 
$sheetsinfo = array(); 
$sheetData = array(); 
if($countSheets==1){ 
$sheet = $sheets[0]; 
$sheetsinfo["rows"] = $sheet->getHighestRow(); 
$sheetsinfo["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); 
for($row=1;$row<=$sheetsinfo["rows"];$row++){ 
for($column=0;$column<$sheetsinfo["column"];$column++){ 
$sheetData[$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue(); 
} 
} 
}else{ 
foreach ($sheets as $key => $sheet) 
{ 
$sheetsinfo[$key]["rows"] = $sheet->getHighestRow(); 
$sheetsinfo[$key]["column"] = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); 
for($row=1;$row<=$sheetsinfo[$key]["rows"];$row++){ 
for($column=0;$column<$sheetsinfo[$key]["column"];$column++){ 
$sheetData[$key][$column][$row] = $sheet->getCellByColumnAndRow($column, $row)->getValue(); 
} 
} 
} 
} 
echo "<pre>"; 
print_r($sheetData); 
echo "</pre>";

注:使用PHP 读取excel文件内容,一般都是处理整理好格式的csv或者excel,也可以读取xml文件

PHPExcel生成Exceel

$sql = sprintf("select * from table where op_id=%d", intval($this->params['id'])); 
$query = $this->_db->query($sql); 
require_once './PHPExcel_1.7.4/Classes/PHPExcel.php'; 
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->setActiveSheetIndex(0); 
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10); 
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15); 
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15); 
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15); 
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15); 
$objPHPExcel->getActiveSheet()->setCellValue('A1', "{$this->_packInfos['o_id']}"); 
$objPHPExcel->getActiveSheet()->setCellValue('B1', "Volume weight (kg)"); 
$objPHPExcel->getActiveSheet()->setCellValue('D1', "Actual weight (kg)"); 
$objPHPExcel->getActiveSheet()->setCellValue('A2', "Box No."); 
$objPHPExcel->getActiveSheet()->setCellValue('B2', "Products"); 
$objPHPExcel->getActiveSheet()->setCellValue('C2', "Shipping Box"); 
$objPHPExcel->getActiveSheet()->setCellValue('D2', "System"); 
$objPHPExcel->getActiveSheet()->setCellValue('E2', "Input"); 
$objActSheet = $objPHPExcel->getActiveSheet(); 
$objActSheet->mergeCells("B1:C1"); 
$objActSheet->mergeCells("D1:E1"); 
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); 
$objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('A2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); 
$objPHPExcel->getActiveSheet()->getStyle('B2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('C2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('D2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('E2'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
if($this->_db->num_rows($query)>0) 
{ 
$i=3; 
while ($row = $this->_db->fetch_assoc($query)) 
{ 
$objPHPExcel->getActiveSheet()->setCellValue('A'.($i),"BOX ".$row['box_num']); 
$objPHPExcel->getActiveSheet()->setCellValue('B'.($i),sprintf("%.2f",$row['volume_weight'])); 
$objPHPExcel->getActiveSheet()->setCellValue('C'.($i),sprintf("%.2f",$row['box_weight'])); 
$objPHPExcel->getActiveSheet()->setCellValue('D'.($i),sprintf("%.2f",$row['system_weight'])); 
$objPHPExcel->getActiveSheet()->setCellValue('E'.($i),sprintf("%.2f",$row['real_weight'])); 
$objPHPExcel->getActiveSheet()->getStyle('A'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); 
$objPHPExcel->getActiveSheet()->getStyle('B'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
$objPHPExcel->getActiveSheet()->getStyle('C'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
$objPHPExcel->getActiveSheet()->getStyle('D'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
$objPHPExcel->getActiveSheet()->getStyle('E'.($i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); 
$i++; 
} 
} 
$fileName="exportBox.xls"; 
$filePath = dirname(dirname("__FILE__"))."/template/".$fileName; 
$path = "./template/".$fileName; 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
if(file_exists($path)){ 
chmod($path, 0777); 
unlink($path); 
$objWriter->save($path); 
header('application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename=weight-'.$this->_packInfos["o_id"].".xlsx"); 
readfile($filePath); 
die(); 
} 
else 
{ 
$objWriter->save($path); 
header('application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename=weight-'.$this->_packInfos["o_id"].".xlsx"); 
readfile($filePath); 
die(); 
}

注:上面的php生成excel的方式是直接使用A标签形式的,如果使用ajax,可以不使用header,直接echo $path,前台window.location.href=返回来的path就可以了。
PHP 相关文章推荐
PHP 程序员应该使用的10个组件
Oct 31 PHP
php引用地址改变变量值的问题
Mar 23 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
php实现简单爬虫的开发
Mar 28 PHP
浅谈PHP值mysql操作类
Jun 29 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 #PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 #PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 #PHP
php学习笔记之面向对象编程
Dec 29 #PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 #PHP
PHP中计算字符串相似度的函数代码
Dec 29 #PHP
PHP flock 文件锁详细介绍
Dec 29 #PHP
You might like
PHP.MVC的模板标签系统(四)
2006/09/05 PHP
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python复制文件代码实现
2013/12/23 Python
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
python3实现mysql导出excel的方法
2019/07/31 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
CSS3 3D制作实战案例分析
2016/09/18 HTML / CSS
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
美术专业学生个人自我评价
2013/09/19 职场文书
公司晚会主持词
2014/03/22 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
大学新学期计划书
2014/04/28 职场文书
大学专科自荐信
2014/06/17 职场文书
责任书范本
2014/08/25 职场文书
三严三实心得体会范文
2014/10/13 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS