PHPEXCEL的用法与简介

 更新时间:2016年11月25日 16:37  点击:1416
PHPEXCEL是一个用来生成excel的php插件,他可以很方便的对excel数据进行操作,如:生成excel,修改excel数据等等。

一、PHPEXCEL简介

PHPEXCEL提供了一系列的API,能够解析与生成excel,pdf之类的文档。

PHPEXCEL虽然强大,不过使用起来相对有些繁锁,如果需要输出较为复杂格式时,是一个不错的选择。可以到官方下载到源码。

二、PHPEXCEL部分函数

设置当前的工作簿,返回该工作簿对象:
$excelSheet = $excel->setActiveSheetIndex(0);

合并单元格,返回该单元格对象,以下示例即合并A列第一行与第二行所在单元格:

 代码如下 复制代码

$excelSheet->mergeCells('A1:A2');

设置单元格的值,参数:单元格名称,值:
$excelSheet->setCellValue('A1', '字符串内容');
$excelSheet->setCellValue('A2', 26); //数值
$excelSheet->setCellValue('A3', true); //布尔值
$excelSheet->setCellValue('A4', '=SUM(A2:A2)'); //公式

phpexcel用法介绍

 

 代码如下 复制代码

include ‘PHPExcel.php’;

  include ‘PHPExcel/Writer/Excel2007.php’;

  //或者include ‘PHPExcel/Writer/Excel5.php’; 用于输出.xls的

  创建一个excel

  $objPHPExcel = new PHPExcel();

  保存excel—2007格式

  $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

  //或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式

  $objWriter->save(”xxx.xlsx”);

  直接输出到浏览器

  $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

  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=”resume.xls”‘);

  header(”Content-Transfer-Encoding:binary”);

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

  

——————————————————————————————————————–

  设置excel的属性:

  

 代码如下 复制代码

创建人

  $objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);

  最后修改人

  $objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);

  标题

  $objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);

  题目

  $objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);

  描述

  $objPHPExcel->getProperties()->setDescription(”Test document for Office 2007 XLSX, generated using PHP classes.”);

  关键字

  $objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);

  种类

  $objPHPExcel->getProperties()->setCategory(”Test result file”);

  ——————————————————————————————————————–

  设置当前的sheet

  $objPHPExcel->setActiveSheetIndex(0);

  设置sheet的name

  $objPHPExcel->getActiveSheet()->setTitle(’Simple’);

  设置单元格的值

  $objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘String’);

  $objPHPExcel->getActiveSheet()->setCellValue(’A2′, 12);

  $objPHPExcel->getActiveSheet()->setCellValue(’A3′, true);

  $objPHPExcel->getActiveSheet()->setCellValue(’C5′, ‘=SUM(C2:C4)’);

  $objPHPExcel->getActiveSheet()->setCellValue(’B8′, ‘=MIN(B2:C5)’);

  合并单元格

  $objPHPExcel->getActiveSheet()->mergeCells(’A18:E22′);

  分离单元格

  $objPHPExcel->getActiveSheet()->unmergeCells(’A28:B28′);


 三、PHPEXCEL举例应用


整个代码如下(值得注意的是表头用了$orderCellData记录了每个商户编号的顺序,为了在表体把对应的数据取出):

 代码如下 复制代码

<<?php

   

    require_once '../../../libs/PHPExcel/Classes/PHPExcel.php';

    require_once '../../../libs/PHPExcel/Classes/PHPExcel/Writer/Excel5.php';

    include_once '../../../libs/PHPExcel/Classes/PHPExcel/IOFactory.php';

    include '../common/config.php';

    // 创建一个处理对象实例(此对象对于2003 2007是相同的)

    $objExcel = new PHPExcel();

   

    //设置属性(这段代码无关紧要,其中的内容可以替换为你需要的)

    $objExcel->getProperties()->setCreator("office 2003 excel");

    $objExcel->getProperties()->setLastModifiedBy("office 2003 excel");

    $objExcel->getProperties()->setTitle("Office 2003 XLS Test Document");

    $objExcel->getProperties()->setSubject("Office 2003 XLS Test Document");

    $objExcel->getProperties()->setDescription("Test document for Office 2003 XLS, generated using PHP classes.");

    $objExcel->getProperties()->setKeywords("office 2003 openxml php");

    $objExcel->getProperties()->setCategory("Test result file");

   

    //开始处理数据(索引从0开始)

    $objExcel->setActiveSheetIndex(0);

 

    $conn = mssql_connect($config['mssql']['host'],$config['mssql']['user'],$config['mssql']['password']);

    mssql_select_db($config['mssql']['dbname'],$conn);

   

    $tm=$_REQUEST['tm'];

   

    $sql = "exec HNow05_getTTSpace '','".$tm."','',1";

    $sql=mb_convert_encoding($sql,'GBK','UTF-8');

    $res=mssql_query($sql);

 

    $i=0;

    $k = array('站码','站名','河系','来报时间','水位','水势');

    $count = count($k);

    $arrs = array('A','B','C','D','E','F');

    //添加表头

    for($i=0;$i<$count;$i++){

       $objExcel->getActiveSheet()->setCellValue($arrs[$i]."1", "$k[$i]");

      

    }

   

    /*--------从数据库读取数据-------*/

    $i=0;

    while($arr=mssql_fetch_array($res))

    {

       $stcd = $arr["STCD"];

       $stnm = $arr["STNM"];

       $rvnm = $arr["RVNM"];

       $tm= $arr["TM"];

       $tdz= $arr["TDZ"];

        $tdptn= $arr["TDPTN"];

       if($tdptn=='6'){

           $tdptn='平';

       }else if($tdptn=='5'){

           $tdptn='涨';

       }else if($tdptn=='4'){

           $tdptn='落';

       }

 

       $u1=$i+2;

       $stnm=iconv("GBK","utf-8",$stnm);

       $rvnm=iconv("GBK","utf-8",$rvnm);

       $tm=iconv("GBK","utf-8",$tm);

 

       /*----------写入内容-------------*/

       $objExcel->getActiveSheet()->setCellValue('a'.$u1, "$stcd");

       $objExcel->getActiveSheet()->setCellValue('b'.$u1, "$stnm");

       $objExcel->getActiveSheet()->setCellValue('c'.$u1, "$rvnm");

       $objExcel->getActiveSheet()->setCellValue('d'.$u1, "$tm");

       $objExcel->getActiveSheet()->setCellValue('e'.$u1, "$tdz");

       $objExcel->getActiveSheet()->setCellValue('f'.$u1, "$tdptn");

 

       $i++;

    }

 

    /*----------设置单元格边框和颜色-------------*/

    $rows = mssql_num_rows($res);

    for($i=0;$i<($rows+1);$i++){

       for($j=0;$j<$count;$j++){

           $a = $i+1;

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getBorders()->getAllBorders()->getColor()->setARGB('FF00BBcc');

           //水平居中

           $objExcel->getActiveSheet()->getStyle($arrs[$j].$a)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

       }

    }

 

    // 高置列的宽度

    $objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

    $objExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);

    $objExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

    $objExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);

    $objExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);

    $objExcel->getActiveSheet()->getColumnDimension('F')->setWidth(10);

   

    // 设置页眉和页脚。如果没有不同的标题奇数/即使是使用单头假定.

    $objExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D');

    $objExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objExcel->getProperties()->getTitle() . '&RPage &P of &N');

   

    // 设置页方向和规模

    $objExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);

    $objExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

   

    // 重命名表

    $objExcel->getActiveSheet()->setTitle('实时潮汐情况');

   

    // Set active sheet index to the first sheet, so Excel opens this as the first sheet

    $objExcel->setActiveSheetIndex(0);

   

    // Redirect output to a client’s web browser (Excel5)保存为excel2003格式

    //设置Excel的名字

    $excelName = '实时潮汐情况('.$tm.')';

    //$excelName = 'Excel_'.date("YmdHis");

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

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

    header( 'Content-Disposition: attachment; filename='.iconv("utf-8", "GBK", $excelName).'.xls');

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

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


    exit;


?>

今天在windows中配置了php mysql环境,很高兴测试一段代码结果提示Call to undefined function mysql_connect()这证明数据库配置不成功哈。
 代码如下 复制代码

<?php

$conn = mysql_connect('localhost','root','password');

var_dump($conn);

?>

基本就是改配置文件php.ini 

首先要确保php.ini中extension_dir = "./ext",该设置是php引用dll的目录;

1.将php文件夹下libmysql.dll和php5ts.dll两个文件拷贝至windows目录下的system32下;或者在环境变量中增加D:php;D:phpext。这两个目录是php的安装目录和扩展dll的目录。
2.修改windows安装目录下的php.ini 去掉;extension=php_mysql.dll前面的分号;
3.extension_dir = "d:phpext (文件在PHP.INI中)。

你看看你的php.ini的配置找到

 代码如下 复制代码

extension=php_mysql.dll
extension=php_mysqli.dll把前面的分号去掉


我用的是apache,所以如果还这行的话,再看看主配置文件里的路径和引用都设置好了没有  PHPIniDir "PHP.INI的路径"   还要加一句  LoadModule*************的内容  这个网上都可以找得到。一般情况下到这里基本可以解决。

找到你的PHP根目录,找到两个文件 libmysql.dll和php5ts.dll 将之复制到system32下面。记住是PHP下面的。不是MYSQL

昨天在使用phpmyadmin连接mysql时出现了#2002 – 服务器没有响应 (或者本地 MySQL 服务器的套接字没有正确配置),但我利用php连接没有问题如

 代码如下 复制代码

<?php  
$link=mysql_connect("127.0.0.1","root","password");  
if (!$link) echo "connect error";  
else echo "connect ok";  
?>

后来想相MySQL数据库服务器的地址应该改成127.0.0.1,

具体方法:

打开我们刚才拷贝到phpMyAdmin目录下的config.inc.php 中

找到这句话:

 代码如下 复制代码

$cfg['Servers'][$i]['host'] = 'localhost';

改成

$cfg['Servers'][$i]['host'] = '127.0.0.1';

这样即可了 ,导致这个问题的原因我觉得应该是host文件解析有问题,大家处理一应该就好了。

php配置mysql与怎么测试配置数据库成功 有需要的朋友可参考一下。

如果你是初次配置 php mysql apache的话,我们要怎么测试php连接数据库成功了,只要创建一个test.php文件,然后把下面代码保存到文件。

 代码如下 复制代码

<?php
$link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密码
if(!$link) echo "失败!";
else echo "成功!";
mysql_close();
?>

在浏览器打开 http://localhost/test.php

如果输入

成功就说明你的配置成功了,如果失败我们可以在mysql_connect("localhost","root","12345") or die( mysql_error());这样就会有错误提示哦。

如果提示mysql_connect函数未定义,我们可以在php.ini中如下图

;extension=php_mysql.dll
;extension=php_mysqli.dll

把前面的;去了

extension=php_mysql.dll
extension=php_mysqli.dll

然后重启apache即可

php将可以正常的和apache结合,并且常见的诸如:PHP Warning: PHP Startup: Unable to load dynamic library……、Fatal error: Call to undefined function mysql_connect() 错误

不过今天在弄一个CMS时还是出现了一个不可饶恕的错误,无法连接mysql,写了一个测试mysql的php文件如下:

 代码如下 复制代码
<?php
$link=mysql_connect('localhost','root','root');
if(!$link) echo "失败!";
else echo "成功!";
mysql_close();
?>    

 

结果报错误:Fatal error: Call to undefined function mysql_connect(),明显没法找到mysql相应的库,百度了一大堆,又是什么复制mysql的lib库、又是复制到windows的system32目录,过于复杂,其实正确的配置应该是在apache的httpd.conf文件中加入下设置:

 代码如下 复制代码

LoadModule php5_module d:/tools/php-5.3.1/php5apache2_2.dll
AddType application/x-httpd-php .php
PHPIniDir d:/tools/php-5.3.1     

注意,最后一行是关键,告诉apache你的php配置文件在哪里,不然你就得把php.ini文件复制到windows的系统目录下了。一般我们通过这里配置就可以完成apache和php的结合。而在php.ini文件中只需要修改如下几个地方即可:

# 修改php的扩展库目录为你的实际路径

 代码如下 复制代码
extension_dir = "D:/tools/php-5.3.1/ext"

# 去掉前面的;

 代码如下 复制代码
extension=php_mysql.dll     

最后一个步骤就是在系统环境变量(注意是系统环境变量,而非用户环境变量)path中加入你的PHP安装路径,在设置成功后,通过phpinfo()应该可以在Apache Environment段的path中可以看到你的PHP安装目录,否则就是环境变量没有配置成功(注意,配置环境变量后重启下apache)。

完成这些步骤后就可以正确连接数据库了,不过前提是你的apache和php的整合是正常的,然后再考虑这个mysql配置,如果还不能够达到效果,你可以质问我,呵呵!


总结,windows平台下apache和php(包括mysql)整合的正确配置步骤如下:

1、安装apache,并保证apache可以单独正常运行

2、将php(如5.2.17或5.3.1)的zip包解压到一个目录,比如D:php-5.3.1

3、在apache的httpd.conf文件的最后加入如下段:

 代码如下 复制代码
# php5 supportLoadModule php5_module D:/php-5.3.1/php5apache2_2.dll
 代码如下 复制代码
AddType application/x-httpd-php .php
 代码如下 复制代码
PHPIniDir D:/php-5.3.14

、在操作系统的环境变量(必须是系统变量而非用户变量)的path中加入D:/php-5.3.1路径

5、将php安装目录下的php.ini-dist重命名为php.ini,并修改如下内容:

# 设置php的扩展文件目录

 代码如下 复制代码
extension_dir = "D:/php-5.3.17/ext"

 # 开启mysql扩展,去掉前面的;注释

 代码如下 复制代码
extension=php_mysql.dll
[!--infotagslink--]

相关文章

  • http 402错误是什么 http 402简介

    http 402错误是什么?402错误较为少见,一般不轻易出现,下面小编就来告诉大家402错误是什么吧。 HTTP 402错误是HTTP状态码的一种,表示“要求付费”; 所求的...2017-01-22
  • C#中using的三种用法

    using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型。 为命名空间创建别名。 using 关键字还用来创建 using 语句 定义一个范围,将在此...2020-06-25
  • iscroll.js 用法介绍

    最新版下载: http://www.csdn123.com/uploadfile/2015/0428/20150428062734485.zip 概要 iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生...2016-05-19
  • C++中cin的用法详细

    这篇文章主要介绍了C++中cin的用法详细,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C#中的try catch finally用法分析

    这篇文章主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 示例详解react中useState的用法

    useState 通过在函数组件里调用它来给组件添加一些内部 state,React 会在重复渲染时保留这个 state,接下来通过一个示例来看看怎么使用 useState吧...2021-06-04
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • php中php://input的用法详细

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input。 下面的例子摘取的是wordpres...2016-11-25
  • MySQL中的主键以及设置其自增的用法教程

    1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD PRIMARY KEY (in...2015-11-24
  • Delphi常用关键字用法详解

    这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
  • C#中this的用法集锦

    本文给大家汇总介绍了C#中的几种this用法,相信大家应该有用过,但你用过几种?以下是个人总结的this几种用法,欢迎大家拍砖,废话少说,直接列出用法及相关代码。...2020-06-25
  • window.onerror()的用法与实例分析

    目前在做window.onerror时上报js错误信息的事,整理下相关资料,需要的朋友可以参考下...2016-01-29
  • C语言循环结构与时间函数用法实例教程

    这篇文章主要介绍了C语言循环结构与时间函数用法,是C语言中非常重要的一个技巧,需要的朋友可以参考下...2020-04-25
  • phpexcel导入xlsx文件报错xlsx is not recognised as an OLE file 怎么办

    phpexcel是一款php读写excel的插件了,小编有一个这样的功能要来实现,但是在导入xlsx时发现xlsx is not recognised as an OLE file 了,但是导入xls是没有问题了,碰到这种...2016-11-25
  • php中 ->与 ==>符号的用法与区别

    本文章来给大家介绍一下在php中 ->与 ==>符号的用法与区别,有需要了解的朋友可尝试参考。 “->”(减号、右尖括号) 用于类中,访问类里的函数或对象,比如:...2016-11-25
  • php __FILE__用法

    __FILE__在php是表示当前文件绝对路径哦,下面我们来看看简单的FILE的实例吧。 《?php echo __FILE__; ?> E:phpinfo.php 那么我们会看到很多cms中会这样写 dirname...2016-11-25
  • foreach()有两种用法

    foreach()有两种用法 1: foreach(array as $value) { 表达式; } 这里的array是你要遍历的数组名,每次循环中,array数组的当前元素的值被赋给$value,...2016-11-25
  • Sort()函数的多种用法

    sort() 方法用于对数组的元素进行排序。接下来通过本文给大家介绍Sort()函数的多种用法,对sort函数的用法相关知识感兴趣的朋友一起学习...2016-03-22
  • php中使用PHPExcel操作excel(xls)文件

    PHPExcel是php的一个插件,它可以实现读取excel文件也就是xls文件了,下面我们就来看一个PHPExcel操作excel(xls)文件例子,希望能帮助到各位。 读取中文的xls、csv文件...2016-11-25
  • C#分屏控件用法实例

    这篇文章主要介绍了C#分屏控件用法实例,需要的朋友可以参考下...2020-06-25