如何利用PHPExcel读取Excel的数据和导出数据到Excel

 更新时间:2017年7月6日 23:49  点击:1912
本篇文章主要介绍了利用PHPExcel读取Excel的数据和导出数据到Excel的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧

PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。也是我们日常开发中,经常会遇到的使用场景。比如有个客户信息表,要批量导出发给同事,我们就可以用PHPExcel来快速实现。同样,如果我们要利用短信群发接口去群发信息,PHPExcel可以快速导入客户信息,避免人工录入信息的麻烦。

PHPExcel使用教程:

首先下载PHPExcel

到https://github.com/PHPOffice/PHPExcel下载PHPExcel,如果不懂得使用git,可以到这https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8下载压缩包,懂得的自行用git下载。

下载好文件,解压可以得到如下文件:

PHPExcel

好了,现在我们就可以用PHPExcel愉快的读取和制作表格了!

PHPExcel DEMO1:利用PHPExcel读取excel信息:

我们在根目录创建一个名为read.php的文件来读取文档,创建一个test.xlsx的文件,里面写的信息如下:

然后在read.php写以下代码:

 

 代码如下复制代码

<?php

include‘./Classes/PHPExcel/IOFactory.php'

 

$inputFileName= ‘./test.xls'

date_default_timezone_set(‘PRC');

// 读取excel文件

try{

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

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

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

}catch(Exception$e) {

die(‘加载文件发生错误:”‘.pathinfo($inputFileName,PATHINFO_BASENAME).'”: ‘.$e->getMessage());

}

 

// 确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧

$sheet=$objPHPExcel->getSheet(0);

$highestRow=$sheet->getHighestRow();

$highestColumn=$sheet->getHighestColumn();

 

// 获取一行的数据

for($row= 1;$row<=$highestRow;$row++){

// Read a row of data into an array

$rowData=$sheet->rangeToArray(‘A' . $row . ‘:'.$highestColumn.$row, NULL, TRUE, FALSE);

//这里得到的rowData都是一行的数据,得到数据后自行处理,我们这里只打出来看看效果

var_dump($rowData);

echo“
”;

}

 

得到的数据:

PHPexcel读取文件

PHPExcel DEMO2:利用PHPExcel导出信息到excel:

 

 代码如下复制代码

<?php

 

/** Error reporting */

error_reporting(E_ALL);

ini_set('display_errors', TRUE);

ini_set('display_startup_errors', TRUE);

date_default_timezone_set('PRC');

 

/** 引入PHPExcel */

require_oncedirname(__FILE__) .'./Classes/PHPExcel.php'

 

// 创建Excel文件对象

$objPHPExcel=newPHPExcel();

// 设置文档信息,这个文档信息windows系统可以右键文件属性查看

$objPHPExcel->getProperties()->setCreator("作者简庆旺")

 ->setLastModifiedBy("最后更改者")

 ->setTitle("文档标题")

 ->setSubject("文档主题")

 ->setDescription("文档的描述信息")

 ->setKeywords("设置文档关键词")

 ->setCategory("设置文档的分类");

 

//根据excel坐标,添加数据

$objPHPExcel->setActiveSheetIndex(0)

 ->setCellValue('A1','你好')

 ->setCellValue('B2','世界')

 ->setCellValue('C1','你好')

 ->setCellValue('D2','世界');

 

// 混杂各种符号, 编码为UTF-8

$objPHPExcel->setActiveSheetIndex(0)

 ->setCellValue('A4','Miscellaneous glyphs')

 ->setCellValue('A5','éàèùâêîôûëïüÿäöüç');

 

$objPHPExcel->getActiveSheet()->setCellValue('A8',"你好世界");

$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);

$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);

 

$value="-ValueA\n-Value B\n-Value C";

$objPHPExcel->getActiveSheet()->setCellValue('A10',$value);

$objPHPExcel->getActiveSheet()->getRowDimension(10)->setRowHeight(-1);

$objPHPExcel->getActiveSheet()->getStyle('A10')->getAlignment()->setWrapText(true);

$objPHPExcel->getActiveSheet()->getStyle('A10')->setQuotePrefix(true);

 

// 重命名工作sheet

$objPHPExcel->getActiveSheet()->setTitle('第一个sheet');

 

// 设置第一个sheet为工作的sheet

$objPHPExcel->setActiveSheetIndex(0);

 

// 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx

$objWriter= PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');

$objWriter->save('export.xlsx');

// 保存Excel 95格式文件,,保存路径为当前路径,

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

$objWriter->save('export.xls');

 

好了,执行后我们可以得到export.xls和export.xlsx。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!

这篇文章主要为大家详细介绍了使用WAMP搭建PHP本地开发环境的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

写在前面的话

PHP是服务器脚本语言,所以需要在服务器上才能运行。作为新手,搭建服务器可能需要捣腾很久,有可能还搞不定。所以在入门阶段,为了把更多时间用在熟悉编程语言上,使用集成环境是最好也是最方便的选择。而本文就来介绍如何在windows平台搭建PHP开发环境。

安装集成环境

1、下载集成环境包WampServer官网

本人下载的是Wampserver 3.0.6 64 bit ,下载完成之后双击安装即可。

wamp 3.0.6 安装的软件分别为:

Apache 2.4.23
PHP 5.6.25/7.0.10
MySQL 5.7.14
PhpMyAdmin 4.6.4
Adminer 4.2.5
PhpSysInfo 3.2.5

* apache 2.4及以上版本与2.4以下版本的配置会有些不同
* wamp会同时安装PHP5和PHP7,安装完成之后可以进行切换使用

2、安装过程出现错误

若安装过程中出现提示缺少 msvcr110.dll 等文件,请先下载vcredist_x64.exe安装wamp所需环境。

服务器配置

1、项目路径

安装好wamp后,在安装路径下有个www文件夹,该文件夹用于存放你的项目文件,在这个目录下的文件才会被服务器识别和执行。

例如:我安装wamp时选中的目录为

D:\wamp64

则安装后的存放项目文件目录为

D:\wamp64\www

当然,如果不想使用默认的www文件夹,也可以修改apache配置,指定目录让服务器解析。

在安装目录下找到apache的配置文件httpd.conf

安装目录\bin\apache\apache2.4.23\conf\httpd.conf

使用记事本或者其他编辑器打开文件,找到

 

 代码如下复制代码

DocumentRoot "${INSTALL_DIR}/www"

...

 

把${INSTALL_DIR}/www修改为需要指定的目录

然后,同样在该目录中找到httpd-vhosts.conf文件

 

 代码如下复制代码

extra\httpd-vhosts.conf

 

#打开文件↓

 

  ServerName localhost

  DocumentRoot D:/wamp64/www

  

  ...

  

 

修改D:/wamp64/www为需要指定的目录即可。这样以后服务器就会解析这个目录下的文件了。
*修改配置之后要记得重启服务器

2、测试

新建一个项目测试服务器是否可用。

在www文件夹下新建一个test文件夹,文件夹中新建一个test.php,php文件中写上一些输出语句。例如程序员入门必写的一句话:

echo 'Hello World!'

之后打开浏览器,在地址栏输入

localhost/test/test.php

如果你的浏览器有显示Hello World!字样,就说明你的服务器可以使用了。

3、配置虚拟主机

不喜欢以localhost/项目文件名/xxx.php/…这种方式进行访问?那可以配置虚拟主机,配置后可以通过类似www.test.com(可自定义)这种形式访问。

首先找到httpd-vhosts.conf文件并打开

安装目录\bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf

在文件末尾添加

 

 代码如下复制代码

  #设置主机名(可自己设置)

  ServerName www.test.com

  #设置主机别名,即用该别名也可以访问(前提是域名解析正确)

  ServerAlias test.com

  #设置该站点根目录

  DocumentRoot "D:\wamp64\www\test"

  #设置文件夹访问控制,其路径要和上一行的DocumentRoot一样,

  

    #用于显示设定“可显示文件列表”(当无可显示网页的时候)

    Options Indexes

    #启用文件夹访问控制的文件.htaccess设置

    AllowOverride All

    #请求控制

    Require all granted

    #默认打开的页面设置

    DirectoryIndex index.php index.html

  

 

然后,找到hosts文件,win10的hosts文件路径为:

 

 代码如下复制代码

C:\Windows\System32\drivers\etc

#每个系统都不一样,可以去问问百度

 

在文件末尾处添加127.0.0.1www.test.com(注意中间的空格不要丢),保存。
*如果保存提示另存为的话,可以先另存为,然后修改另存为的文件名为hosts,覆盖掉原来的hosts文件

 

 代码如下复制代码

...

# Additionally, comments (such as these) may be inserted on individual

# lines or following the machine name denoted by a'#'symbol.

#

# For example:

#

#  102.54.94.97  rhino.acme.com     # source server

#   38.25.63.10  x.acme.com       # x client host

 

# localhost name resolution is handled within DNS itself.

# 127.0.0.1   localhost

#  ::1      localhost

 

127.0.0.1www.test.com

 

修改hosts的目的是为了在浏览器访问时,系统不会把域名(www.test.com)提交到DNS服务器,而是直接根据hosts文件找到IP地址(此时是本地),提交解析。这样我们本地的服务器就可以解析这个域名了。

4、局域网远程访问

如果需要在局域网中能通过链接访问站点(例如开发web app时使用手机测试),那么就需要开启服务器远程访问权限了。

打开apache配置文件httpd.conf

安装目录\bin\apache\apache2.4.23\conf\httpd.conf

修改AllowOverride和Require配置为如下

 

 代码如下复制代码

DocumentRoot "${INSTALL_DIR}/www"

  ...

  AllowOverride all

  Require all granted

  ...

 

同时需要修改httpd-vhosts.conf文件,修改相同的配置

 

 代码如下复制代码

  ServerName localhost

  DocumentRoot D:/wamp64/www

  

    ...

    AllowOverride All

    Require all granted

  

 

若只需要访问其中某一个站点,则首先需要给这个站点配置虚拟主机,然后在该虚拟主机的配置中修改AllowOverride和Require

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。

这篇文章主要介绍了PHP 实现浏览记录并按日期分组的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

现有测试数据如下,要求实现如下图中的效果:

 

 代码如下复制代码

array(4) {

 [0] =>array(6) {

 ["visit_id"] => int(127)

 ["goods_id"] => int(16)

 ["visittime"] => int(1494399935)

 ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金"

 ["shop_price"] => string(6)"500.00"

 }

 [1] =>array(6) {

 ["visit_id"] => int(124)

 ["goods_id"] => int(13)

 ["visittime"] => int(1494399921)

 ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款"

 ["shop_price"] => string(7)"4000.00"

 }

 [2] =>array(6) {

 ["visit_id"] => int(123)

 ["goods_id"] => int(27)

 ["visittime"] => int(1494399903)

 ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)"

 ["shop_price"] => string(6)"329.00"

 }

 [3] =>array(6) {

 ["visit_id"] => int(120)

 ["goods_id"] => int(26)

 ["visittime"] => int(1494224263)

 ["goods_name"] => string(21)"欢乐谷免票一张"

 ["shop_price"] => string(5)"50.00"

 }

}

 

还没实现之前我想这个代码不知道要O(n)呢还是更高的复杂度才能实现,细想一下,其实php的数组底层就是哈希实现的,如何简单利用这个特性使复杂度降到O(1)呢?

 

 代码如下复制代码

show me the code:

/* 浏览记录按日期分组 */

functiongroupVisit($visit)

{

 $curyear=date('Y');

 $visit_list= [];

 foreach($visitas$v) {

  if($curyear==date('Y',$v['visittime'])) {

   $date=date('m月d日',$v['visittime']);

  }else{

   $date=date('Y年m月d日',$v['visittime']);

  }

  $visit_list[$date][] =$v;

 }

 return$visit_list;

}

 

说明:入参 $visit 就是上面一开始的测试数据,函数中还对用户体验做了一些优化,比如,你的浏览记录中总是显示出今年的年份,是不是感觉有点冗余,所以如果是本年份的话,年份就要隐藏起来,其他年份还是照样显示出来。不然代码会更加简洁。

好了上面的测试数据经过该函数之后,再把返回值打印出来,有:

 

 代码如下复制代码

array(2) {

 ["05月10日"] =>array(3) {

 [0] =>array(6) {

  ["visit_id"] => int(127)

  ["goods_id"] => int(16)

  ["visittime"] => int(1494399935)

  ["goods_name"] => string(53)"OPPO R9s 全网通4G+64G 双卡双待手机 玫瑰金"

  ["shop_price"] => string(6)"500.00"

 }

 [1] =>array(6) {

  ["visit_id"] => int(124)

  ["goods_id"] => int(13)

  ["visittime"] => int(1494399921)

  ["goods_name"] => string(76)"SIEMENS/西门子 KA92NV09TI双开门家用对开门电冰箱变频旗舰款"

  ["shop_price"] => string(7)"4000.00"

 }

 [2] =>array(6) {

  ["visit_id"] => int(123)

  ["goods_id"] => int(27)

  ["visittime"] => int(1494399903)

  ["goods_name"] => string(85)"爱他美白金版Aptamil 幼儿配方奶粉3段(12-36个月适用)900g(欧洲进口)"

  ["shop_price"] => string(6)"329.00"

 }

 }

 ["05月08日"] =>array(1) {

 [0] =>array(6) {

  ["visit_id"] => int(120)

  ["goods_id"] => int(26)

  ["visittime"] => int(1494224263)

  ["goods_name"] => string(21)"欢乐谷免票一张"

  ["shop_price"] => string(5)"50.00"

 }

 }

}

 

对的,这正是我想要的效果。

以上所述是小编给大家介绍的PHP 实现浏览记录并按日期分组,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!

本文介绍了PHP两种实现无级递归分类的方法,非常实用,有兴趣的同学快来看看吧

 

 代码如下复制代码

/**

* 无级递归分类 TP框架

* @param int $assortPid 要查询分类的父级id

* @param mixed $tag  上下级分类之间的分隔符

* @return string $tree 返回的分类树型结构结果

*

*/

functionrecursiveAssort($assortPid,$tag='')

{

 $assort= M('goods_class')->where("class_pid = $assortPid")->field('class_id, class_name')->select();

 foreach($assortas$value) {

 $tree.='

 $tree.= recursiveAssort($value['class_id'],$tag.' ');

 }

 return$tree;

}

 

 

 代码如下复制代码

/**

 * 利用php的引用传递 CI框架

 *

 */

 publicfunctionget_access()

 {

 $access=array();

 $field='id, pid, method, name, description'

 $q_access=$this->db->select($field)->get('access');

 $q_result=$q_access->result_array();

 if(!empty($q_result)) {

  $items=array();

  foreach($q_resultas$value) {

  $items[$value['id']] =$value;

  }

  foreach($itemsas$key=>$item) {

  if($item['pid'] == 0) {

   $access[] = &$items[$key];

  }else{

   $items[$item['pid']]['sub_access'][] = &$items[$key];

  }

  }

 }

 return$access;

 }

 

[!--infotagslink--]

相关文章