phpexcel导入xlsx文件报错xlsx is not recognised as an OLE file 怎么办

 更新时间:2016年11月25日 17:36  点击:2493
phpexcel是一款php读写excel的插件了,小编有一个这样的功能要来实现,但是在导入xlsx时发现xlsx is not recognised as an OLE file 了,但是导入xls是没有问题了,碰到这种问题我们来看小编的解决办法。

最初的做法

 代码如下 复制代码

include 'classes/PHPExcel/IOFactory.php';

$inputFileName = $target;


$objReader = new PHPExcel_Reader_Excel5(); 

$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
$count = count($sheetData);
for($i=1;$i<=$count;$i++)
{
 echo (iconv('utf-8','gbk',$sheetData[$i]['A'])).'<hr />';
}

报错

 PHPExcel_Reader_Exception: The filename .1443578799.xlsx is not recognised as an OLE file in Classes\PHPExcel\Shared\OLERead.php on line 89

( ! ) Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'The filename 1443578799.xlsx is not recognised as an OLE file' in Classes\PHPExcel\Shared\OLERead.php on line 89
( ! ) PHPExcel_Reader_Exception: The filename 1443578799.xlsx is not recognised as an OLE file in Classes\PHPExcel\Shared\OLERead.php on line 89
Call Stack

碰到这个问题我们是因为xlsx出错了,可能通过类型判断 解决办法如下

 代码如下 复制代码

if( $extension =='xlsx' )
{
 $objReader = new PHPExcel_Reader_Excel2007();
}
else
{
 $objReader = new PHPExcel_Reader_Excel5();
}

这样再操作会发现问题已经解决了。

UEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,本文我们解决在同一个页面上如何放多个 UEditor ,然后再用 PHP 接收 UEditor 的值。

同一个网页如何放置多个Ueditor?

参考代码如下:

    <form  method="post" action="save.php">

    <script type="text/plain" id="ueditorId_1" name="ueditorName_1" style="width: 400px;height:500px;">编辑器的默认值_1</script>

    <script type="text/javascript">
        UE.getEditor('ueditorId_1');
    </script>

     

    <script type="text/plain" id="ueditorId_2" name="ueditorName_2" style="width: 450px;height:550px;">编辑器的默认值_2</script>

    <script type="text/javascript">
        UE.getEditor('ueditorId_2');
    </script>

    </form>

这样,就会在页面中渲染2个Ueditor编辑器。

PHP如何获取多个Ueditor的值?

注意,上面的 ueditorName_1,ueditorName_2 即为表单的Name值,所以服务端PHP获取Ueditor编辑器的值变得很简单,参考代码如下:

    $_POST["ueditorName_1"];  // 第一个编辑器的值

    $_POST["ueditorName_2"];  // 第二个编辑器的值
    

解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?


项目中,用到百度ueditor编辑器,发现,上传大一点的图片,图片会失真,刚开始还以为是PHP端做了图片压缩,仔细看配置说明,发现是编辑器自带有个自动压缩图片的功能,可恶的是,压缩后的图片失真了!

决定去掉这个压缩功能,如果非得要压缩,那就交给服务端PHP来处理吧!

找到配置文件:ueditor/php/config.json

把 imageCompressEnable 设置为 false 即可!

 
【总结】有2个比较重要的配置文件:

    ueditor/ueditor.config.js

    ueditor/php/config.json

PHPMyAdmin编辑数据库表一直提示”正在加载”问题要如何来解决呢,碰到这种问题我们可以通过下面的方法来解决了,具体的操作步骤如下图所示。
一般对于普通的VPS主机用户需求来说,我们会熟悉1-2种一键包或者WEB面板工具部署网站环境,会添加站点和数据库部署站点,以及勤奋一点定期备份数据,基本上还是可以满足基本的VPS主机应用的。上午的时候有遇到一个网友提出来在网站搬家过程中出现PHPMyAdmin加载问题。

 

因为其在搬家网站过程中,需要登录PHPMyAdmin页面客户端然后编辑修改WORDPRESS原本数据库绑定的网站域名(应该是更换站点域名需求),但是点击编辑数据库表的时候出现"正在加载"问题。这个问题老左还是第一次遇到,因为如果遇到PHPMyAdmin访问速度慢都还好解决(解决PHPMyAdmin打开和访问较慢的2种方法)。

 

解决PHPMyAdmin编辑数据库表一直提示"正在加载"问题

 

这里老左也搜索网上看看有没有其他用户的解决方法:

 

第一、修改配置文件

 

这个方法来自网络上的,按照说明是针对phpmyadmin 4.0.2 php 5.5.0版本可以使用。

 

1、到PHPMYADMIN文件目录找到libraries/Util.class.php文件,找到

 

 代码如下 复制代码

    # 查找
return strftime($date, $timestamp);

# 替换成如下代码:
if(extension_loaded('gettext'))
return strftime($date, $timestamp);

# 中国区这样设置.
date_default_timezone_set('UTC');
return gmdate('Y-m-d H:i:s', $timestamp + 28800);

 

2、保存文件替换,根据提示是可以解决的。

 

第二、修改防火墙设置

 

这里老左看到这个朋友使用的是PHPMYADMIN4.4.15版本,而且对应的上面的文件是不一样的,所以修改之后还是有错误提示。正准备放弃的时候无意中问了一句这个朋友VPS是否有用到防火墙软件工具,其告知是有用到。应该问题就在这里了,可能防火墙直接判断操作数据库可能会认为是SQL注入问题,于是给屏蔽当前的IP。

 

解决方法:我们要么关闭防火墙工具,等操作完毕之后再开启,或者将我们操作数据库时候的本地IP地址添加白名单,这样就没有问题。

 

总结,到目前为止PHPMyadmin数据库管理出现"正在加载"的问题是可以解决的,如果有其他朋友没有解决或者还有其他方法可以分享出来。
在使用file_put_contents时会碰到并发性问题了,对于这个问题我们有多种解决方案了,其实锁是小编比较喜欢的解决办法了,当然也有其它办法,具体如下。


解决 办法一,file_put_contents 高并发与独占锁定

 

发现高并发访问时使用 file_put_contents 写入文件造成数据置空。

查看官方文档:

 

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )
参数:

 

filename 要被写入数据的文件名。 data 要写入的数据。类型可以是 string,array 或者是 stream 资源(如上面所说的那样)。 flags flags 可以是 FILE_USE_INCLUDE_PATH,FILE_APPEND 和/或 LOCK_EX(获得一个独占锁定),然而使用 FILE_USE_INCLUDE_PATH 时要特别谨慎。 context 一个 context 资源。
直接直至 flags 参数为 LOCK_EX 即可在高并发时获得一个独占锁定。

另外,flock 函数的也提供了文件锁定方法:

 
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 释放锁定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);

 

注意 flock() 需要一个文件指针。

 

方法二,file_put_contents() 存在高并发问题,Smarty中处理方式如下。

<?php

 

define("FILE_PUT_CONTENTS_ATOMIC_TEMP", dirname(__FILE__)."/cache");

define("FILE_PUT_CONTENTS_ATOMIC_MODE", 0777);

 

function file_put_contents_atomic($filename, $content) {

 

    $temp = tempnam(FILE_PUT_CONTENTS_ATOMIC_TEMP, 'temp');

    if (!($f = @fopen($temp, 'wb'))) {

        $temp = FILE_PUT_CONTENTS_ATOMIC_TEMP . DIRECTORY_SEPARATOR . uniqid('temp');

        if (!($f = @fopen($temp, 'wb'))) {

            trigger_error("file_put_contents_atomic() : error writing temporary file '$temp'", E_USER_WARNING);

            return false;

        }

    }

 

    fwrite($f, $content);

    fclose($f);

 

    if (
!@rename($temp
, $filename)) {

        @unlink($filename);

        @rename($temp, $filename);

    }

 

    @chmod($filename, FILE_PUT_CONTENTS_ATOMIC_MODE);

 

    return true;

 

}

 

?>

PHP date()如果要使用我们必须在php.ini中配置时间时区了,如果不设置使用date函数会出现It is not safe to rely on the system s timezone settings错误,下面一起来看看一个例子。


在写php文件上传程序时有时会出现这样的警告:

    Upload: 屏幕截图2014-09-28_160214.png 
    Type: image/png 
    Size: 66.84765625 Kb 
    Temp file: D:\Users\Aven\AppData\Local\Temp\php742F.tmp 
     
    Warning: move_uploaded_file() [function.move-uploaded-file]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in F:\PHP\upload_file.php on line 26 
     
    Warning: move_uploaded_file(upload/屏幕截图2014-09-28_160214.png) [function.move-uploaded-file]: failed to open stream: No such file or directory in F:\PHP\upload_file.php on line 26 
     
    Warning: move_uploaded_file() [function.move-uploaded-file]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in F:\PHP\upload_file.php on line 26 
     
    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\Users\Aven\AppData\Local\Temp\php742F.tmp' to 'upload/屏幕截图2014-09-28_160214.png' in F:\PHP\upload_file.php on line 26 
    Stored in: upload/屏幕截图2014-09-28_160214.png 

这是因为PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入格林威治标准时间和北京时间大概差8个小时左右,我们可以按照下面的方法解决:

1、在页头使用date_default_timezone_set()设置我的默认时区为北京时间,即 <?php date_default_timezone_set("PRC"); ?>就可以了。

2、在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC,同时取消这一行代码的注释,即去掉前面的分号就可以了。

这里选用修改配置文件的方式解决问题:

用Notepad++打开php.ini,

查找“date.timezone”,把语句前的分号去掉,值设置为“PRC”,重启FastCGI服务,问题解决

[!--infotagslink--]

相关文章

  • php读取zip文件(删除文件,提取文件,增加文件)实例

    下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
  • Jupyter Notebook读取csv文件出现的问题及解决

    这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06
  • Photoshop打开PSD文件空白怎么解决

    有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
  • 解决python 使用openpyxl读写大文件的坑

    这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
  • C#实现HTTP下载文件的方法

    这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • SpringBoot实现excel文件生成和下载

    这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php批量替换内容或指定目录下所有文件内容

    要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替...2016-11-25
  • PHP文件上传一些小收获

    又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
  • Zend studio文件注释模板设置方法

    步骤:Window -> PHP -> Editor -> Templates,这里可以设置(增、删、改、导入等)管理你的模板。新建文件注释、函数注释、代码块等模板的实例新建模板,分别输入Name、Description、Patterna)文件注释Name: 3cfileDescriptio...2013-10-04
  • AI源文件转photoshop图像变模糊问题解决教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说下AI源文件转photoshop图像变模糊问题的解决教程,各位想知道具体解决方法的使用者们,那么下面就快来跟着小编...2016-09-14
  • C++万能库头文件在vs中的安装步骤(图文)

    这篇文章主要介绍了C++万能库头文件在vs中的安装步骤(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • php文件上传你必须知道的几点

    本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
  • ant design中upload组件上传大文件,显示进度条进度的实例

    这篇文章主要介绍了ant design中upload组件上传大文件,显示进度条进度的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • C#使用StreamWriter写入文件的方法

    这篇文章主要介绍了C#使用StreamWriter写入文件的方法,涉及C#中StreamWriter类操作文件的相关技巧,需要的朋友可以参考下...2020-06-25
  • php实现文件下载实例分享

    举一个案例:复制代码 代码如下:<?phpclass Downfile { function downserver($file_name){$file_path = "./img/".$file_name;//转码,文件名转为gb2312解决中文乱码$file_name = iconv("utf-8","gb2312",$file_name...2014-06-07
  • C#路径,文件,目录及IO常见操作汇总

    这篇文章主要介绍了C#路径,文件,目录及IO常见操作,较为详细的分析并汇总了C#关于路径,文件,目录及IO常见操作,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 查找php配置文件php.ini所在路径的二种方法

    通常php.ini的位置在:复制代码 代码如下:/etc目录下或/usr/local/lib目录下。如果你还是找不到php.ini或者找到了php.ini修改后不生效(其实是没找对),请使用如下办法:1.新建php文件,写入如下代码复制代码 代码如下:<?phpe...2014-05-31
  • PHP判断上传文件类型的解决办法

    分享给大家php判断上传文件类型的方法,大家一起学习学习。/** * 读取文件前几个字节 判断文件类型 * @return String */ function checkTitle($filename){ $file=fopen($filename, "rb"); $bin=fread($file, 2); /...2015-10-21