php处理Excel步骤介绍

遇到问题

平时在工作中,时常会出现将数据库表导出为Excel或者将Excel导入数据库表的需求。这一需求早早就已经实现过了,为了方便导入导出,兄弟连www.lampbrother.net将其分装成了两个方法作为记录。

代码实现

phpexcel类库的引用

phpexcel拥有强大的Excel处理能力,在packagist上已经拥有数百万次的下载量,不过实话实说,excel的处理速度仍然是非常慢,数据量较大时慎重使用。在packagist上下载或者直接用composer require phpoffice/phpexcel之后,便可以使用phpexcel了。

导出成为Excel

在绝大多数情况下,导出excel其实就是将二位数组转化为表格。

use namespace PHPExcel;

/**

* @param $name string 要保存的Excel的名字

* @param $ret_data 转换为表格的二维数组

* @throws PHPExcel_Exception

* @throws PHPExcel_Reader_Exception

*/

function exportExcel($name, $ret_data){

$objPHPExcel = new PHPExcel();

//设置表格

$objPHPExcel->getProperties()->setCreator($name)

->setLastModifiedBy($name)

->setTitle("Office 2007 XLSX Test Document")

->setSubject("Office 2007 XLSX Test Document")

->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")

->setKeywords("office 2007 openxml php")

->setCategory("Test result file");

//填充数据

foreach ($ret_data as $key => $row) {

$num = $key + 1;

//$row = array_values($row);

$i=0;

foreach ($row as $key2 => $value2) {

$objPHPExcel->setActiveSheetIndex(0)->setCellValue( Cell::stringFromColumnIndex($i). ($num), $value2);

$i++;

}

}

//设置表格并输出

$objPHPExcel->getActiveSheet()->setTitle($name);

header(‘Content-Type: application/vnd.ms-excel‘);

header("Content-Disposition: attachment;filename={$name}.xls");

header(‘Cache-Control: max-age=0‘);

header(‘Cache-Control: max-age=1‘);

header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s‘) . ‘ GMT‘);

header(‘Cache-Control: cache, must-revalidate‘);

header(‘Pragma: public‘); // HTTP/1.0

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);

$objWriter->save(‘php://output‘);

exit;

}

导入Excel

同理,导入Excel其实就是将Excel的数据转化成为二维数组,这就要求Excel必须符合格式。

function getRows($inputFileName)

{

if (!file_exists($inputFileName)) {

throw new Exception("File not existed");

}

$inputFileType = PHPExcel_IOFactory::identify($inputFileName);

$objReader = PHPExcel_IOFactory::createReader($inputFileType);

$objPHPExcel = $objReader->load($inputFileName);

$objWorksheet = $objPHPExcel->getActiveSheet();

$highestRow = $objWorksheet->getHighestRow();

$highestColumn = $objWorksheet->getHighestColumn();

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数

$row = 1;

$curr = array();

while ($row <= $highestRow) {

for ($col = 0; $col < $highestColumnIndex; $col++) {

$value = str_replace(array("\n", "\n\r", "\r"), "", $objWorksheet->getCellByColumnAndRow($col, $row)->getValue());

$curr[$row][] = $value;

}

$row++;

}

array_shift($curr);//第一行一般是字段名(Excel中列的标题),导入时要移除

return $curr;

}

其他

导出时保存的格式是xlsx,想要改成其他格式需要传入不同的参数。

导入时如果有多个sheet时需要在上次打开时在要导入的sheet页(以保证当前sheet为activeSheet)关闭,或者根据sheet名在程序中选择sheet。

时间: 2024-10-28 11:47:12

php处理Excel步骤介绍的相关文章

使用eBay API基本步骤介绍

Posted on 2010-12-14 23:36 moss_tan_jun 阅读(6218) 评论(0) 编辑 收藏 使用eBay API基本步骤介绍要开始使用eBay API,需要如下基本步骤: 1.    注册开发帐号: https://developer.ebay.com/join/Default.aspx 2.    选择API类型: eBay有大约6种API 开发语言,例如.net和Java的SDK        http://developer.ebay.com/products

C#数据导出Excel详细介绍

概要: excel导出在C#代码中应用己经很广泛了,我这里就做些总结,供自己和读者学习用. Excel知识点.一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它的默认路径是C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.Interop.Excel.dll 代码中添加引用using Micr

Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)

文章目录1 根据oracle官方发布的漏洞报告下载补丁2 补丁包上传解压到Linux Server3 补丁包上传解压到Windows Server4 关于OPatch5 Linux与Windows安装补丁区别6 Linux安装补丁6.1 Linux单个补丁安装6.2 查看已安装的补丁6.3 多个补丁安装6.4 单个补丁回滚6.5 多个补丁回滚6.6 验证补丁是否应用到Oracle Home7 重启weblogic应用服务8 Windows安装补丁 文章正文由oracle官方发布的漏洞公告,对we

微信公众号之订阅号(已认证)实现oauth2授权登录详细步骤介绍

一: 简介 通过 微信公众平台---->权限接口 可以得知 微信的订阅号是没有授权登录接口的,只有服务号才有该权限.这点微信公众平台在多处反复强调 最终的事实是:微信订阅号是可以实现授权登录的! 二:具体实现步骤: 1. 首先在 微信公众平台(https://mp.weixin.qq.com/) [开发]----> [基本配置]----->[服务器配置]完成基本的配置信息 URL: 这里的地址我写的是我们HTML5项目的某个Controller或Servlet的地址,例如 http://

关于windows 7 安装Vim的安装步骤介绍。——Arvin

在Ubuntu中第一次使用VIM编辑器发现好强大,打算在Win7中安装,其中遇到一些小问题,下边介绍详细的安装过程和遇到的问题. 1-安装 首先发现Github中有一款中意的作者,并且他开源的基本插件都集合了. 地址:https://github.com/DemonCloud/Aix-Vim(下载地址在项目说明文档中) 这是开源的点阵字体项目(可惜win中还没有用上,看看以后有时间折腾折腾) 将文件下载下来,按照作者的提示使用 :Vundleinstall 安装所有插件(作者的项目中已经安装Vu

关于激活Bentley软件详细步骤介绍

在安装完ContextCapture软件之后,大家怀着迫不及待的心情双击了运行快捷键.但是很遗憾的是,会产生下面的提示窗口: 也许大家并不在意,就觉得关掉这个窗口不就行了.然而,头疼的问题来了.这个窗口关了之后,软件反而也关闭了!!!! 好了,既然问题出现了,那么就需要有解决的方法! 下面逐步介绍如何解决该问题! 1.打开ContextCapture Settings,win10系统可以在左下角输入进行搜索.其他系统可以在安装目录下找到该启动快捷键. 2.打开ContextCapture Set

转载分享:Android APP二次打包操作步骤介绍

看到好的技术教程就想转载一下,不喜勿喷!谢谢配合,仅供菜鸟学习研究,不要做坏事哦\(^o^)/~ 关于Android APP 二次打包现象已经屡见不鲜,为何"打包党"就吃准了Android平台,二次打包的操作过程到底有多简单? 本文将从Android apk的结构.二次打包的工具.步骤等方面向移动开发者说明二次打包操作的简单性,从而引起开发者对APP安全的重视,并及时对APP进行代码混淆或加固 保护等安全措施. 安卓apk的文件结构首先来看一下Android apk的内部文件结构. 随

ios app 开发中ipa重新签名步骤介绍

作为一个app应用程序开发者,在app应用程序在苹果商店上架前总需要将安装包安装到ios机器上进行测试,这个时候我们就需要打包in house版本的ipa了,打包in house实际上是一个将ipa应用程序重新签名的一个过程.一般来说打包in house需要以下东西:MAC机器,一般打包ipa都是在MAC机上打包的,一个后缀名为.mobileprovision概要配置文件,一个后缀名为P12的证书,还有一个后缀名为.cer的证书,还有就是你想重新签名的ipa. 如何给ipa重新签名 步骤1 : 

ASP.NET导出数据到Excel 实例介绍

ASP.NET导出数据到Excel  该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建一个asp.ne的tweb应用程序把代码粘贴进去就好了 html页面代码 <%@ Page language="c#" Codebehind="OutExcel.aspx.cs" AutoEventWireup="false" Inherits