在企业里使用PHP进行开发,不可避免总会遇到读/写Excel的需求,遇到这种需求,一般使用PHPExcel类库进行开发。

PHPExcel现在最新版本是1.8.0,最低需要PHP5.2版本,支持读取xls、xlsx、csv等常用的excel格式,下载地址http://phpexcel.codeplex.com/releases/view/119187

1.读取Excel文件

 require __DIR__ . '/PHPExcel.php';

 $excelReader = PHPExcel_IOFactory::createReader('Excel2007');//设定读取格式
$excel = $excelReader->load(__DIR__ . '/Quadratic.xlsx');//设定读取文件
$sheet = $excel->setActiveSheetIndex(0);//设定excel工作簿
foreach ($sheet->getRowIterator(1) as $row) {
//读取行,从第1行
var_dump('row:' . $row->getRowIndex());//读取行号
$cellIterator = $row->getCellIterator();
foreach ($cellIterator as $cell) {
//读取单元格
var_dump($cell->getColumn());//获取列名
var_dump($cell->getCoordinate());//获取坐标
var_dump($cell->getRow());//获取所在行号
var_dump($cell->isFormula());//判断值是否为公式
var_dump($cell->getValue());//获取值
}
}

2.写入Excel文件

 $excel = new PHPExcel();
$sheet = $excel->setActiveSheetIndex('0');//设定写入的工作簿
//写入数据
for ($row = 0; $row < 10; $row++) {
for ($cell = 0; $cell < 5; $cell++) {
$sheet->setCellValueByColumnAndRow($cell, $row, "row:{$row} col:{$cell}");
}
}
$excelWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');//设定保存格式
$excelWriter->save(__DIR__ . '/excel_test.xlsx');//保存文件

3.生成Excel并开始下载

 $excel = new PHPExcel();
$sheet = $excel->setActiveSheetIndex('0');//设定写入的工作簿
//写入数据
for ($row = 0; $row < 10; $row++) {
for ($cell = 0; $cell < 5; $cell++) {
$sheet->setCellValueByColumnAndRow($cell, $row, "row:{$row} col:{$cell}");
}
}
$excelWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');//设定保存格式
//开始输出内容至浏览器
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Cache-Control: cache, must-revalidate');
header ('Pragma: public');
$excelWriter->save('php://output');//输出文件

PHPExcel简易使用教程的更多相关文章

  1. Git GUI简易使用教程

    Git GUI简易使用教程:先上图~~~~~ 一. 先从添加文件开始讲(先上图): 1.选中要添加的文件,点击菜单栏的“提交”,选中“缓存为提交”,

  2. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  3. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...

  4. Android简易实战教程--第十六话《SharedPreferences保存用户名和密码》

    之前在Android简易实战教程--第七话<在内存中存储用户名和密码> 那里是把用户名和密码保存到了内存中,这一篇把用户名和密码保存至SharedPreferences文件.为了引起误导, ...

  5. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  6. Qt QBarSeries简易柱状图教程

    博客园最强Qt QBarSeries简易柱状图教程 前情提要 每个人的绘图需求不同,此篇教程也是根据需求来改的.我的需求大概如下所示. 通过信号槽的方式接收signals来刷新柱状图,所以每次触发信号 ...

  7. Webpack简易入门教程

    <!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...

  8. Lua简易入门教程

    环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...

  9. Windows Git+TortoiseGit简易使用教程

    转载自 http://blog.csdn.net/jarelzhou/article/details/8256139 官方教程:http://tortoisegit.org/docs/tortoise ...

随机推荐

  1. 泛型Dictionary效率要大于HashTable!

    原文发布时间为:2009-09-28 -- 来源于本人的百度文章 [由搬家工具导入] Dictionary,Hashtable, ArrayList, List学习 Dictionary 泛型的优点( ...

  2. Hbuilder 快捷键

    最近在学习javaweb  在学前端的时候用到了一款国产编辑器 很棒 Hbuilder  快捷键 Ctrl + d                   删除整行内容 Ctrl + Shift +R   ...

  3. (二)Python selenium

    chromedriver版本    支持的Chrome版本 v2.29                     v56-58v2.28                     v55-57v2.27  ...

  4. Pacman常用命令

    Pacman是Arch Linux 的包管理器.它将一个简单的二进制包格式和易用的构建系统结合了起来.不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理. 更新系统 在 ...

  5. Codeforces 631B Print Check (思维)

    题目链接 Print Check 注意到行数加列数最大值只有几千,那么有效的操作数只有几千,那么把这些有效的操作求出来依次模拟就可以了. #include <bits/stdc++.h> ...

  6. Decrease (Judge ver.)

    题目描述 We have a sequence of length N consisting of non-negative integers. Consider performing the fol ...

  7. AbstractAdvisingBeanPostProcessor---spring aop 处理器

    开局一张图,我们先上张图 类的说明和继承关系/** * Base class for {@link BeanPostProcessor} implementations that apply a * ...

  8. 【转】java8中谨慎使用实数作为HashMap的key!

    java8中谨慎使用实数作为HashMap的key! java8中一个hashCode()函数引发的血案java8中一个hashCode()函数引发的血案1.起因2.实数的hashCode()3.总结 ...

  9. CHM Navigation to the webpage was canceled 解决办法

    在网上下载了一些chm文件,打开后看不到内容,显示:Navigation to the webpage was canceled 如图:             解决方法如下: 在文件上右键,选择“属 ...

  10. C++测试题练习题1

    1.which of the following is not automatically generated by the compiler? a. default constructor    b ...