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 相关文章推荐
PHP实现的功能是显示8条基色色带
Oct 09 PHP
PHP入门速成教程
Mar 19 PHP
PHP array_push 数组函数
Dec 26 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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
多人战的战术与战略
2020/03/04 星际争霸
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
python命令行工具Click快速掌握
2019/07/04 Python
python 实现单通道转3通道
2019/12/03 Python
python对XML文件的操作实现代码
2020/03/27 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
Python运算符+与+=的方法实例
2021/02/18 Python
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
公司总经理岗位职责范本
2014/08/15 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
考研英语复习计划
2015/01/19 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
vue实力踩坑之push当前页无效
2022/04/10 Vue.js
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记