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开发中常用的三个表单验证函数使用小结
Mar 03 PHP
二招解决php乱码问题
Mar 25 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
Jan 30 PHP
php实现的双向队列类实例
Sep 24 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
Mar 21 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 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
PHP5 面向对象(学习记录)
2009/12/02 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
PHP 引用文件技巧
2010/03/02 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
php中的登陆login实例代码
2016/06/20 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
javascript 对象定义方法 简单易学
2009/03/22 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Python中的默认参数详解
2015/06/24 Python
python八大排序算法速度实例对比
2017/12/06 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
2013年高中生自我评价
2013/10/23 职场文书
办公室助理岗位职责
2013/12/25 职场文书
公益广告语集锦
2014/03/13 职场文书
询价采购方案
2014/06/09 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技