php怎么读取excel?php中使用PHPExcel读写excel(xls)文件的方法

 更新时间:2017年7月6日 23:50  点击:1988
很多PHP类库在读取中文的xls、csv文件时会有问题,网上找了下资料,发现PHPExcel类库好用。现将PHPExcel读写Excel的方法分别叙述,详细请见本文。

本文实例讲述了PHP中使用PHPExcel读写excel(xls)文件的方法,非常实用。分享给大家供大家参考之用。具体方法如下:

很多PHP类库在读取中文的xls、csv文件时会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址为:http://phpexcel.codeplex.com/。现将PHPExcel读写Excel的方法分别叙述如下:

1、读取xls文件内容

 代码如下复制代码

<?php

  //向xls文件写入内容

  error_reporting(E_ALL);

  ini_set('display_errors', TRUE); 

  include'Classes/PHPExcel.php'     

  include'Classes/PHPExcel/IOFactory.php'

  //$data:xls文件内容正文

  //$title:xls文件内容标题

  //$filename:导出的文件名

  //$data和$title必须为utf-8码,否则会写入FALSE值

  functionwrite_xls($data=array(),$title=array(),$filename='report'){

    $objPHPExcel=newPHPExcel();

    //设置文档属性,设置中文会产生乱码,需要转换成utf-8格式!!

    // $objPHPExcel->getProperties()->setCreator("云舒")

               // ->setLastModifiedBy("云舒")

               // ->setTitle("产品URL导出")

               // ->setSubject("产品URL导出")

               // ->setDescription("产品URL导出")

               // ->setKeywords("产品URL导出");

    $objPHPExcel->setActiveSheetIndex(0);

     

    $cols='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

    //设置www.jb51.net标题

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

      //echo $cols{$i}.Ƈ'

      $objPHPExcel->getActiveSheet()->setCellValue($cols{$i}.Ƈ',$title[$i]);

    }

    //设置标题样式

    $titleCount=count($title);

    $r=$cols{0}.Ƈ'

    $c=$cols{$titleCount}.Ƈ'

    $objPHPExcel->getActiveSheet()->getStyle("$r:$c")->applyFromArray(

      array(

        'font' =>array(

          'bold'  => true

        ),

        'alignment'=>array(

          'horizontal'=> PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,

        ),

        'borders'=>array(

          'top'  =>array(

            'style'=> PHPExcel_Style_Border::BORDER_THIN

          )

        ),

        'fill'=>array(

          'type'   => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,

          'rotation' => 90,

          'startcolor'=>array(

            'argb'=>'FFA0A0A0'

          ),

          'endcolor' =>array(

            'argb'=>'FFFFFFFF'

          )

        )

      )

    );

     

    $i= 0;

    foreach($dataas$d) {//这里用foreach,支持关联数组和数字索引数组

      $j= 0;

      foreach($das$v) { //这里用foreach,支持关联数组和数字索引数组

        $objPHPExcel->getActiveSheet()->setCellValue($cols{$j}.($i+2),$v);

        $j++;

      }

       $i++;

    }

    // 生成2003excel格式的xls文件

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

    header('Content-Disposition: attachment;filename="'.$filename.'.xls"');

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

 

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

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

  }

  $array=array(

    array(1111,'名称','品牌','商品名','http://www.jb51.net'),

    array(1111,'名称','品牌','商品名','http://www.jb51.net'),

    array(1111,'名称','品牌','商品名','http://www.jb51.net'),

    array(1111,'名称','品牌','商品名','http://www.jb51.net'),

    array(1111,'名称','品牌','商品名','http://www.jb51.net'),

  );

  write_xls($array,array('商品id','供应商名称','品牌','商品名','URL'),'report');

   

?>

2、向xls文件写内容

 代码如下复制代码

<?php

  //获取数据库数据(mysqli预处理学习)

  $config=array(

    'DB_TYPE'=>'mysql',

    'DB_HOST'=>'localhost',

    'DB_NAME'=>'test',

    'DB_USER'=>'root',

    'DB_PWD'=>'root',

    'DB_PORT'=>񠁚',

  );

  functiongetProductIdByName($name) {

    global$config;

    $id= false;

     

    $mysqli=newmysqli($config['DB_HOST'],$config['DB_USER'],$config['DB_PWD'],$config['DB_NAME']);

    if(mysqli_connect_error()) { //兼容 < php5.2.9 OO way:$mysqli->connect_error

      die("连接失败,错误码:".mysqli_connect_errno()."错误信息:".mysqli_connect_error());

    }

    //设置连接数据库的编码,不要忘了设置

    $mysqli->set_charset("gbk");

    //中文字符的编码要与数据库一致,若没设置,结果为null

    $name= iconv("utf-8","gbk//IGNORE",$name);

    if($mysqli_stmt=$mysqli->prepare("select id from 137_product where name like ?")) {

      $mysqli_stmt->bind_param("s",$name);

      $mysqli_stmt->execute();

      $mysqli_stmt->bind_result($id);

      $mysqli_stmt->fetch();

      $mysqli_stmt->close();

    }

    $mysqli->close();

    return$id; //得到的是gbk码(同数据库编码)

  } 

  $id= getProductIdByName('%伊奈卫浴伊奈分体座便器%');

  var_dump($id);

?>

希望本文所述对大家的PHP程序设计有所帮助

本文详细介绍了一个php有道翻译api调用方法实例,调用之前我们需申请一个有道翻译API数据接口的key。想知道的同学可以看看下文。

本文实例讲述了php有道翻译api调用方法,这里我们利用了file_get_contents函数直接读取由api返回的数据进行处理,分享给大家供大家参考。具体分析如下:

调用之前我们需申请一个有道翻译API数据接口的key,地址如:

http://fanyi.youdao.com/openapi?path=data-mode

方法说明,数据接口:

http://fanyi.youdao.com/openapi.do?keyfrom=&key=&type=data&doctype=&version=1.1&q=要翻译的文本

参数说明:

type - 返回结果的类型,固定为data

doctype - 返回结果的数据格式,xml或json或jsonp

version - 版本,当前最新版本为1.1

q - 要翻译的文本,不能超过200个字符,需要使用utf-8编码

errorCode:

0 - 正常

20 - 要翻译的文本过长

30 - 无法进行有效的翻译

40 - 不支持的语言类型

50 - 无效的key

PHP实例代码如下:

 代码如下复制代码
$url = "http://fanyi.youdao.com/openapi.do?keyfrom=xujiangtao&key=1490852988&type=data&doctype=json&version=1.1&q=".$content;   
$list = file_get_contents($url);
$js_de = json_decode($list,true);

注意:使用API key 时,请求频率限制为每小时1000次,超过限制会被封禁.

如果您的应用确实需要超过每小时1000次请求,请与 translate-service@corp.youdao.com 联系, 并提供您的应用的详细信息,名称、功能、网站地址、使用API的方式、API key、预计访问频率、是否商业行为、截屏等等,以及该应用访问有道翻译API时所使用的服务器IP,审核通过后可放宽访问限制.

本文详细介绍了php while循环得到循环次数的实例代码,在for循环中,我们很容易得到循环次数,因为是作为条件出现的,在while也可以得到。有需要的同学可以参考一下。

 

 代码如下复制代码
<?php
   $link = mysql_connect('localhost','root','pwd');
   mysql_select_db('db'); 
   $sql = "select region_id,local_name from regions where region_grade=1";
   $result = mysql_query($sql);
 $i =0;
  while ($row= mysql_fetch_assoc($result)) {
        $list[$i]['text']=$row['local_name']; 
        $list[$i]['value']=$row['region_id'];
        $i++;       
   }
  $list = json_encode($list);
  echo   $list;
?>

 

phpstorm怎么实现断点调试?本文详细介绍了phpstorm+Xdebug断点调试PHP,不会的同学快来看看这篇文章吧!希望对大家有所帮助。

前言:

       何为DEBUG?

       相信很多程序员都知道debug这个单词,也明白它的意思,但是对于这词的由来,恐怕少有人知道。关于debug的由来,要追溯到1937年。1937年,美国青年霍德华.艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿的行业,正式跨进“计算机”领地。为马克1号编制程序的是哈佛的一位女数学家格蕾丝·莫雷·赫伯,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为程序除错的意思。

官方给出的步骤:

Zero-configuration Web Application Debugging with Xdebug and PhpStorm

运行环境:

PHPSTORM版本 : 8.0.1

PHP版本 : 5.6.2

xdebug版本:php_xdebug-2.2.5-5.6-vc11-x86_64.dll

ps : php版本和xdebug版本一定要相对应

1. PHP安装xdebug扩展

php.ini的配置,下面的配置仅供参考,路径要换成自己的!

[xdebug]

zend_extension="D:\wamp\php-5.6.2-x64\ext\php_xdebug-2.2.5-5.6-vc11-x86_64.dll"

xdebug.remote_enable = On

xdebug.remote_handler = dbgp   

xdebug.remote_host= localhost

xdebug.remote_port = 9000

xdebug.idekey = PHPSTORM

ps : remote_handler 、remote_host、remote_port 这些都有默认值,但还是建议设置下,至少知道要设置这些参数~

查看phpinfo~

 

【或者使用PHPstudy:其他选项菜单/PHP扩展设置/PHP扩展/XDEBUG打上对钩】

2.PHPSTORM设置

楼主以前一直用zendstudio,刚开始用phpstorm非常蛋疼,用了一段时间后发现还挺好用的~

        1.首先检查phpstorm的xdebug配置

          这里的debug port要和php.ini里面的xdebug.remote_port相一致!默认是9000,如果9000端口被占用的话,可以改成其他端口。

                

phpstorm配置

  • 客户端调试,打开phpStorm,进入File>Settings>PHP>Servers,这里要填写服务器端的相关信息,name填localhost,host填localhost,port填80,debugger选XDebug

  • 进入File>Settings>PHP>Debug,看到XDebug选项卡,port填9000,其他默认

  • 进入File>Settings>PHP>Debug>DBGp Proxy,IDE key 填 phpStorm,host 填localhost,port 填80

  • 点OK退出设置。

            2. 设置debug.

            

           

添加本地的 web server~

 www.51open.pcom 是我本地的 web server~ ~

3.开始调试

  1. 打好第一个断点,shift + F9就可以了

  2. 打好第一个断点,选中配置的debug,  按旁边的臭虫 按钮

[!--infotagslink--]

相关文章