PHPEXCEL导入excel表格生成数组

 更新时间:2016年11月25日 16:19  点击:1762
本方法使用PHPEXCEL插件读取excel文件转化为数组了,后期还有没有完成的我们可以把转换成数组之后再保存到mysql数据库这个就非常的方便了。
 代码如下 复制代码

<?php
/**
 * @desc PHPEXCEL导入
 * return array();
 */
function importExcel($file)
{
    require_once 'PHPExcel.php';
    require_once 'PHPExcel/IOFactory.php';
    require_once 'PHPExcel/Reader/Excel5.php';
    $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
    $objPHPExcel = $objReader->load($file);
    $sheet = $objPHPExcel->getSheet(0);
    $highestRow = $sheet->getHighestRow(); // 取得总行数
    $highestColumn = $sheet->getHighestColumn(); // 取得总列数
    $objWorksheet = $objPHPExcel->getActiveSheet();
 
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
    $excelData = array();
    for ($row = 1; $row <= $highestRow; $row++) {
        for ($col = 0; $col < $highestColumnIndex; $col++) {
            $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
        }
    }
    return $excelData;
}
 
//用法:
importExcel('test.xsl');
前面写过了一篇文章是图片反盗链的,我自己弄得单独的页面就采用了sina的短连接,对于短连接来说还是方便的,地址太长占地方。下面分享源码,有注释,非原创
 代码如下 复制代码

<?php
//Sina App_Key
define('SINA_APPKEY', '31641035');

function curlQuery($url) {
 //设置附加HTTP头
 $addHead = array(
 "Content-type: application/json"
 );

 //初始化curl,当然,你也可以用fsockopen代替
 $curl_obj = curl_init();

 //设置网址
 curl_setopt($curl_obj, CURLOPT_URL, $url);

 //附加Head内容
 curl_setopt($curl_obj, CURLOPT_HTTPHEADER, $addHead);

 //是否输出返回头信息
 curl_setopt($curl_obj, CURLOPT_HEADER, 0);

 //将curl_exec的结果返回
 curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);

 //设置超时时间
 curl_setopt($curl_obj, CURLOPT_TIMEOUT, 15);

 //执行
 $result = curl_exec($curl_obj);

 //关闭curl回话
 curl_close($curl_obj);

 return $result;
}

//简单处理下url,sina对于没有协议(http://)开头的和不规范的地址会返回错误
function filterUrl($url = '') {
 $url = trim(strtolower($url));
 $url = trim(preg_replace('/^http:///', '', $url));
 if ($url == '')
 return false;
 else
 return urlencode('http://' . $url);
}

//根据长网址获取短网址
function sinaShortenUrl($long_url) {
 //拼接请求地址,此地址你可以在官方的文档中查看到
 $url = 'http://api.t.sina.com.cn/short_url/shorten.json?source=' . SINA_APPKEY . '&url_long=' . $long_url;

 //获取请求结果
 $result = curlQuery($url);

 //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西
 //print_r($result);exit();

 //解析json
 $json = json_decode($result);

 //异常情况返回false
 if (isset($json->error) || !isset($json[0]->url_short) || $json[0]->url_short == '')
 return false;
 else
 return $json[0]->url_short;
}

//根据短网址获取长网址,此函数重用了不少sinaShortenUrl中的代码,以方便你阅读对比,你可以自行合并两个函数
function sinaExpandUrl($short_url) {
 //拼接请求地址,此地址你可以在官方的文档中查看到
 $url = 'http://api.t.sina.com.cn/short_url/expand.json?source=' . SINA_APPKEY . '&url_short=' . $short_url;

 //获取请求结果
 $result = curlQuery($url);

 //下面这行注释用于调试,你可以把注释去掉看看从sina返回的信息是什么东西
 //print_r($result);exit();

 //解析json
 $json = json_decode($result);

 //异常情况返回false
 if (isset($json->error) || !isset($json[0]->url_long) || $json[0]->url_long == '')
 return false;
 else
 return $json[0]->url_long;
}

//要缩短的网址
$url = $long; //这里自己看着办,修改成你要缩短的网址还是获取post的数据还是怎么滴。

$url = filterUrl($url);
$short = sinaShortenUrl($url);
$ulong = sinaExpandUrl($short);
?>

本文中短连接已经附带的一个appkey不用再自己申请KEY当然你如果需要使用你自己的您也可以自己去替换。至于用法就看你了,镶入到其他程序使用啊?单独做个生成短连接的页面都不管我的事啊。使用方法不多说。最近比较懒。

从phpMyAdmin4.2.0开始,phpMyAdmin 高级功能的默认数据库 phpmyadmin 中又新增了一张表 pma__savedsearches。所以利用升级脚本 update.sh 将 phpMyAdmin 从 4.1.x 升级到 4.2.x 后,登录 phpMyAdmin 会出现以下提示

phpMyAdmin 高级功能尚未完全设置,部分功能未激活。
点击查看提示信息,就会发现 $cfg['Servers'][$i]['savedsearches'] 出现错误提示。

 

备注:如果是全新安装LAMP一键安装脚本,则不受影响。

解决办法:
1、删除 phpMyAdmin 安装目录 /data/www/default/phpmyadmin 下旧的配置文件 config.inc.php,再下载最新的文件。
命令如下:
rm -f /data/www/default/phpmyadmin/config.inc.php
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/lamp/master/conf/config.inc.php -O /data/www/default/phpmyadmin/config.inc.php
chown apache:apache /data/www/default/phpmyadmin/config.inc.php
2、导入最新的 sql 文件,将数据库 phpmyadmin 中新增的一张表 pma__savedsearches 创建出来。在安装最新版 phpMyAdmin 时,update.sh 脚本已经把最新的 create_tables.sql 复制到网站服务器上传文件夹 upload/ 中。在 phpMyAdmin 的导入标签中,执行该 sql 文件即可。
phpMyAdmin从4.1.x升级到4.2.x注意事项
3、退出 phpMyAdmin,重新登录后,错误提示已经不存在了。
phpMyAdmin从4.1.x升级到4.2.x注意事项

 

 

在未看到这篇文章之前我们一般不会对于缓存这么看重,经过测试之后我们发现使用文件缓存比直接使用数据库要快几倍,下面测试是6倍之多哦,下面一起来看看吧。

在Thinkphp项目中测试各种环境下的程序执行时间
不使用缓存:

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");
      
$starttime=caltime();//开始时间   

$articles=array();

//循环取出500条文章信息
for($i=0;$i<100;$i++){
   $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
   $articles=array_merge($articles,M('article')->query($sql));
}

$overtime=caltime();//结束时间

echo '不使用缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';

?>

结果:不使用缓存条件下程序执行时间是:0.0600001811981秒

文件缓存:

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");

$starttime=caltime();//开始时间

$articles=S('articles');
if(!$articles){
   $articles=array();
   //循环取出500条 www.111cn.net 文章信息
   for($i=0;$i<100;$i++){
       $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
       $articles=array_merge($articles,M('article')->query($sql));
   }
   S('articles',$articles,60);
}

$overtime=caltime();//结束时间

echo '使用文件缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
?>

结果:使用文件缓存条件下程序执行时间是:0.00999999046326秒

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");
      
$starttime=caltime();//开始时间

$mem=new Memcache();
if(!$mem->connect('127.0.0.1',11211)){
   echo '连接失败';
}

$articles=$mem->get('articles');

if(!$articles){
   $articles=array();
   //循环取出500条文章信息
   for($i=0;$i<100;$i++){
       $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
       $articles=array_merge($articles,M('article')->query($sql));
   }
   $mem->set('articles',$articles,MEMCACHE_COMPRESSED,60);
}

$overtime=caltime();//结束时间

echo '使用memcache缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';
?>

结果:使用memcache缓存条件下程序执行时间是:0.00999999046326秒

 代码如下 复制代码

<?php
header("content-type:text/html;charset=utf-8");
      
$starttime=caltime();//开始时间

$redis=new Redis();
$redis->connect('127.0.0.1','6379');

if(!$redis){
   echo '连接失败';
}

$articles=$redis->get('articles');

if(!$articles){
   $articles=array();
   //循环取出500条www.111cn.net文章信息
   for($i=0;$i<100;$i++){
       $sql="select a.*,c.* from blog_article as a,blog_category as c where a.reid=c.id limit 0,5";
       $articles=array_merge($articles,M('article')->query($sql));
   }
   $redis->setex('articles',60,$articles);
}

$overtime=caltime();//结束时间

echo '使用redis缓存条件下程序执行时间是:'.($overtime-$starttime).'秒';

?>

结果:使用redis缓存条件下程序执行时间是:0.00999999046326秒

可见使用缓存的条件下,程序的执行速度比不使用缓存的时候快了6倍,

但是不同缓存由于数据不是特别庞大,几乎没有什么差别

本文章给各位整理了三种php计划任务的例子,分别是利用了windows,linux及php的ignore_user_abort的函数来执行,下面我给大家分别举几个例子,有兴趣的朋友可进入参考。

WINDOWS中设置计划任务执行PHP文件

1、写一个PHP程序,命名为test.php,内容如下所示:

 代码如下 复制代码
<?
$fp = fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!n");
fclose($fp);
?>

程序大胆地写,什么include/require尽管用,都没问题
2、新建Bat文件,命名为test.bat,内容如下所示:

D:phpphp.exe -q D:websitetest.php

3、建立WINDOWS计划任务:
开始–>控制面板–>任务计划–>添加任务计划
浏览文件夹选择上面的bat文件
设置时间和密码(登陆WINDOWS的)
保存即可了。
4、大功告成! 可以右键计划任务点“运行”试试

用PHP脚本实现定时任务

PHP脚本执行时间限制,默认的是30m 解决办法:set_time_limit();或者修改PHP.ini 设置max_execution_time时间(不推荐)
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
 
PHP定时执行的代码:

 代码如下 复制代码

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=5;// 每隔5s运行
 
//方法1--死循环
do{
echo '测试'.time().'<br/>';
sleep($interval);// 等待5s
}while(true);
 
//方法2---sleep 定时执行
require_once './curlClass.php';//引入文件
 
$curl = new httpCurl();//实例化
$stime = $curl->getmicrotime();
for($i=0;$i<=10;$i++){
 
echo '测试'.time().'<br/>';
sleep($interval);// 等待5s
 
}
ob_flush();
flush();
$etime = $curl->getmicrotime();
echo '<hr>';
echo round(($etime-stime),4);//程序执行时间

Linux的Crontab执行PHP脚本

一、在Crontab中使用PHP执行脚本
就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本。
每一小时执行myscript.php如下:

 代码如下 复制代码
 # crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php为PHP程序的路径。
二、在Crontab中使用URL执行脚本
如果你的PHP脚本可以通过URL触发,你可以使用lynx或curl或wget来配置你的Crontab。
下面的例子是使用Lynx文本浏览器访问URL来每小时执行PHP脚本。Lynx文本浏览器默认使用对话方式打开URL。但是,像下面的,我们在lynx命令行中使用-dump选项来把URL的输出转换来标准输出。

 代码如下 复制代码
00 * * * * lynx -dump /myscript.php

 
下面的例子是使用CURL访问URL来每5分执行PHP脚本。Curl默认在标准输出显示输出。使用"curl -o"选项,你也可以把脚本的输出转储到临时文件。

 代码如下 复制代码

*/5 * * * * /usr/bin/curl -o temp.txt /myscript.php

 
下面的例子是使用WGET访问URL来每10分执行PHP脚本。-q选项表示安静模式。"-O temp.txt"表示输出会发送到临时文件。

 代码如下 复制代码
 */10 * * * * /usr/bin/wget -q -O temp.txt /myscript.php
[!--infotagslink--]

相关文章

  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

    这篇文章主要介绍了在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • js生成随机数的方法实例

    js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
  • PHP验证码生成与验证例子

    验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
  • PHP生成不同颜色、不同大小的tag标签函数

    复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
  • R语言导入导出数据的几种方法汇总

    这篇文章主要给大家总结介绍了R语言导入导出数据的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
  • php中利用str_pad函数生成数字递增形式的产品编号

    解决办法:$str=”QB”.str_pad(($maxid[0]["max(id)"]+1),5,”0″,STR_PAD_LEFT ); 其中$maxid[0]["max(id)"]+1) 是利用max函数从数据库中找也ID最大的一个值, ID为主键,不会重复。 str_pad() 函数把字符串填充为指...2013-10-04
  • JS生成某个范围的随机数【四种情况详解】

    下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
  • C#生成Word文档代码示例

    这篇文章主要介绍了C#生成Word文档代码示例,本文直接给出代码实例,需要的朋友可以参考下...2020-06-25
  • Vue组件文档生成工具库的方法

    本文主要介绍了Vue组件文档生成工具库的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-11
  • PHP简单实现生成txt文件到指定目录的方法

    这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28
  • 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
  • C#数据导入到EXCEL的方法

    今天小编就为大家分享一篇关于C#数据导入到EXCEL的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-06-25
  • 史上最简洁C# 生成条形码图片思路及示例分享

    这篇文章主要介绍了史上最简洁C# 生成条形码图片思路及示例分享,需要的朋友可以参考下...2020-06-25
  • 让C# Excel导入导出 支持不同版本Office

    让C# Excel导入导出,支持不同版本的Office,感兴趣的小伙伴们可以参考一下...2020-06-25