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+javascript液晶时钟
Oct 09 PHP
php foreach、while性能比较
Oct 15 PHP
php 魔术方法使用说明
Oct 20 PHP
php在文件指定行中写入代码的方法
May 23 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
全面解读PHP的人气开发框架Laravel
Oct 15 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
php的ddos攻击解决方法
2015/01/08 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
Python的多态性实例分析
2015/07/07 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
Python if语句知识点用法总结
2018/06/10 Python
python global和nonlocal用法解析
2020/02/03 Python
python中的对数log函数表示及用法
2020/12/09 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
物流管理专业职业生涯规划书
2014/01/06 职场文书
法人授权委托书
2014/04/03 职场文书
学习演讲稿范文
2014/05/10 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
评职称个人总结
2015/03/05 职场文书
运动会表扬稿范文
2015/05/05 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
MySQL修炼之联结与集合浅析
2021/10/05 MySQL