`

【转】ThinkPHP与PHPExcel冲突

    博客分类:
  • PHP
阅读更多
原文出自http://www.lurenfake.com/archives/161/

最近一个项目需要批量导入Excel数据,要用到PHP读取Excel中的内容然后导入到数据库。很早之前就知道有一个叫做PHPExcel的类(官方网站)可以用来操作Excel,一直没有机会尝试,今天试用发现无比强大,下载后的源码包里有详细文档,几乎能实现手工操作Excel能实现的一切功能。

一个简单的读取Excel的例子如下:

$inputFileType = 'Excel2007';
$inputFileName = './public/files/import_user_template.xlsx';
$sheetname = 'Sheet1';
//指定Excel类型,创建一个reader
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
//设置只读取数据,不包括公式和格式
$objReader->setReadDataOnly(true);
//只读取指定的sheet
$objReader->setLoadSheetsOnly($sheetname);
$objPHPExcel = $objReader->load($inputFileName);

$curSheet = $objPHPExcel->getSheet(0);
//包含数据的最大列
$allColumn = $curSheet->getHighestColumn();
//包含数据的最大行
$allRow = $curSheet->getHighestRow();

for($currentRow = 1; $currentRow <= $allRow; $currentRow++){
        for($currentCol = 'A'; $currentCol <= $allColumn; $currentCol++){
                echo $curSheet->getCell($currentCol.$currentRow)->getValue()."\t";
        }
        echo "\r\n";
}


要在ThinkPHP中使用,把源码包中的Classes目录复制到ThinkPHP的Vendor目录下,改名为PHPExcel,然后调用Vendor方法载入

vendor('PHPExcel.PHPExcel');可是这样一来发现读取Excel以后再调用M或者D方法实例化模型类时报找不到Model类的错误,经过研究发现是自动装载机制冲突,要解决冲突,需要在M或者D方法调用之前使用spl_autoload_register函数重新注册autoloader类

spl_autoload_register(array('Think','autoload'));
分享到:
评论

相关推荐

    ThinkPHP与PHPExcel冲突解决方法

    这主要是因为在ThinkPHP框架中已经配置了自动装载机制,当引入PHPExcel后,可能会与原有的自动装载机制发生冲突,造成类无法被正确加载。 冲突的根源在于ThinkPHP和PHPExcel都使用了自动装载类,而两者可能会有不同...

    在ThinkPHP中调用PHPExcel的问题解决方案

    - **自动加载配置**:通过`spl_autoload_register()`注册自动加载机制,避免ThinkPHP和PHPExcel之间的冲突。 #### 四、总结 通过以上步骤,可以有效地解决在ThinkPHP中使用PHPExcel时遇到的问题。确保PHPExcel正确...

    Thinkphp3.2版命名空间PHPExcel代码

    在"Thinkphp3.2版命名空间PHPExcel代码"这个主题中,我们将深入探讨如何在ThinkPHP 3.2框架中使用命名空间来集成和操作PHPExcel库。 首先,让我们理解一下命名空间(Namespace)在PHP中的概念。命名空间是PHP 5.3...

    php中$美元符号与Zen Coding冲突问题解决方法分享

    您可能感兴趣的文章:ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法php多用户读写文件冲突的解决办法php中并发读写文件冲突的解决方案ThinkPHP与PHPExcel冲突解决方法ThinkPHP跳转页success及error...

    ThinkPHP 框架实现的读取excel导入数据库操作示例

    ThinkPHP框架支持PHP的命名空间(Namespaces)特性,这允许将代码逻辑分离在不同的命名空间内,避免了全局函数和类名冲突。在示例中,我们可以看到对vendor函数的调用,这是ThinkPHP框架中处理第三方库(如PHPExcel...

    PHPExcel读取EXCEL中的图片并保存到本地的方法

    在使用过程中,开发者还需要注意文件的存储位置和文件名的管理,避免在保存图片时产生命名冲突或覆盖重要文件。合理的文件路径和安全的文件命名策略是保证功能实现的前提。 总结起来,PHPExcel库在处理Excel文档时...

    基于PHP的Niushop开源商城系统 php版正式版.zip

    10. 版本控制:使用Git进行版本控制,可以帮助团队协作,追踪代码变更,避免开发过程中的冲突。 以上是基于PHP的Niushop开源商城系统开发中涉及的主要知识点,深入理解和掌握这些内容,将有助于你成功搭建和定制...

Global site tag (gtag.js) - Google Analytics