php生成与读取excel文件


Posted in PHP onOctober 14, 2016

在网站中经常会生成表格,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介绍用PHP来生成和读取Excel文件。

要执行下面的函数,首先要引入一个类库:PHPExcel,PHPExcel是一个强大的PHP类库,用来读写不同的文件格式,比如说Excel 2007,PDF格式,HTML格式等等,这个类库是建立在Microsoft's OpenXML和PHP 的基础上的,对Excel提供的强大的支持,比如设置工作薄,字体样式,图片以及边框等等,下面来看看它是如何读写Excel文件的:

首先来看如果生成Excel文件:

下面这代码中函数arrayToExcel的功能是把一个二维数组的数据生成一个excel文件,并且保存在服务器上。

require_once 'Classes/PHPExcel/Reader/Excel2007.php';
require_once 'Classes/PHPExcel/Reader/Excel5.php';
include 'Classes/PHPExcel/IOFactory.php';
function arrayToExcel($data){
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setTitle('firstsheet');
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
//add data
$i = 2;
foreach ($data as $line){
$objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $line['From']);
$objPHPExcel->getActiveSheet()->getCell('A'.$i)->setDataType('n');
$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $line['To']);
$objPHPExcel->getActiveSheet()->getCell('B'.$i)->setDataType('n');
$i++;
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$file = 'excel.xls';
$objWriter->save($file);
}

如果你不希望保存在服务器上,希望生成以后直接下载到客户端,可以在输出文件的时候加入下面的代码,而不使用 $objWriter->save($file);

代码如下:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="excel.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');

接下来看一个读取Excel文件内容的实例:

下面这代码中函数excelToArray的功能是把一个excel里的内容重新整理放到一个数组了。

代码如下:

require_once 'Classes/PHPExcel.php';
require_once 'Classes/PHPExcel/IOFactory.php';
function excelToArray($file){
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData = array();
for ($row = 2; $row <= $highestRow; ++$row) {
for ($col = 0; $col <= $highestColumnIndex; ++$col) { $excelData[$row][] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
}
}
return $excelData;
}

精简办法

代码如下:

<?php
/**
 *
 * @copyright 2007-2012 Xiaoqiang.
 * @author Xiaoqiang.Wu <jamblues@gmail.com>
 * @version 1.01
 */
error_reporting(E_ALL);
date_default_timezone_set('Asia/ShangHai');
 
/** PHPExcel_IOFactory */
require_once '../Classes/PHPExcel/IOFactory.php'; 
// Check prerequisites
if (!file_exists("31excel5.xls")) {
  exit("not found 31excel5.xls.n");
}
$reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load("31excel5.xls"); // 载入excel文件
$sheet = $PHPExcel->getSheet(0); // 读取第一??工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
 
/** 循环读取每个单元格的数据 */
for ($row = 1; $row <= $highestRow; $row++){//行数是以第1行开始
  for ($column = 'A'; $column <= $highestColumm; $column++) {//列数是以A列开始
    $dataset[] = $sheet->getCell($column.$row)->getValue();
    echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
  }
} 
?>

希望本文所述对你有所帮助,php生成与读取excel文件内容就给大家介绍到这里了。希望大家继续关注我们的网站!想要学习php可以继续关注本站。

PHP 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
php图片添加文字水印实现代码
Mar 15 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
php网页版聊天软件实现代码
Aug 12 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
PHP序列化操作方法分析
Sep 28 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP7 windows支持
Mar 09 PHP
基于PHP实现用户注册登录功能
Oct 14 #PHP
PHP基于curl后台远程登录正方教务系统的方法
Oct 14 #PHP
php车辆违章查询数据示例
Oct 14 #PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 #PHP
php+jQuery递归调用POST循环请求示例
Oct 14 #PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 #PHP
PHP中多线程的两个实现方法
Oct 14 #PHP
You might like
php生成word并下载代码实例
2019/03/15 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
js实现图片轮播效果
2015/12/19 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
three.js 实现露珠滴落动画效果的示例代码
2021/03/01 Javascript
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python文本数据处理学习笔记详解
2019/06/17 Python
django迁移文件migrations的实现
2020/03/31 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
简单英文演讲稿
2014/01/01 职场文书
人事部岗位职责范本
2014/03/05 职场文书
员工安全承诺书
2014/05/22 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers