make phpexcel working with XAMPP7.0.9
环境
- XAMPP 7.0.9 (PHP 7.0.9)
- PHPExcel 1.7.6-1.8.1
- not lib_zip.dll
- Windows 10.1
- thinkPHP 5.0.1
Steps
安装好PHPExcel,可以使用composer安装;
第一个错误是phpzip库没有找到,ZipArchive and lib-zip.dll
PHPExcel 依赖 lib_zip库,需要在PHP的php.conf文件中打开。PHP5.3+默认有这个库,但是XAMPP TMD居然没有。要看有没有可以打开 XAMPP_ROOT/php/ext/ (in Windows) 文件夹看有没有 lib_zip.dll;
如果没有可以从 官网 下载,拖到 lib_zip.dll 上面的文件夹中。but,好像不行,需要重新编译PHP。PHPExcel内置的zip库 PCLZIP
phpexcel 有一个 Pclzip 类,作为 lib_zip 缺失的情况下的备胎,具体可以看( from stackoverflow )
需要在加载IOFactory方法前 添加一句PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);来切换到内置的zip库。路径有问题 Classes/Shared/ZipArchive.php
但是内置的 Classes/Shared/ZipArchive.php 类有个不兼容Windows路径的错误需要更正一下,在方法public function getFromName($fileName)(141行)。
找到的错误是传进来的$fileName包含的路径是这样的のxl/_rels/workbook.xml.rels(即使在windows下也是斜线模式,*nix)但是实际在$list数组中的却是Windows的反斜线风格xl\_rels\workbook.xml.rels,斜线和反斜线不匹配,So 问题来了。
需要在匹配的if判断中添加反斜线的匹配!!!!!!!!!!!!!
# before
if (strtolower($list[$i]["filename"]) == strtolower($fileName) || strtolower($list[$i]["stored_filename"]) == strtolower($fileName)) {
# after
if (strtolower($list[$i]["filename"]) == strtolower($fileName) || str_replace("/", "\u{5c}", strtolower($fileName)) == strtolower($list[$i]["filename"]) || strtolower($list[$i]["stored_filename"]) == strtolower($fileName) || str_replace("/", "\u{5c}", strtolower($fileName)) == strtolower($list[$i]["stored_filename"])) {
# \u{5c} is backslash
还会有一个问题就是 "**Variable contents is not defined", so 再小改一下
# before
if ( is_array($extracted) && $extracted > 0 ) {
$contents = $extracted[0]["content"];
}
return $contents;
#after
$contents = "";
if ( is_array($extracted) && $extracted > 0 ) {
$contents = $extracted[0]["content"];
return $contents;
}
return false;
现在可以在PHP7(Windows)中使用了
make phpexcel working with XAMPP7.0.9的更多相关文章
- phpexcel读取输出操作
//读取 <?php header("Content-Type:text/html;charset=utf-8"); include 'Classes/PHPExcel.ph ...
- thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
<?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...
- yii phpexcel <转>
原文详情参见 这里 1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php ...
- ThinkPHP导入Excel文件(使用PHPExcel)
一. 主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发 ...
- YII使用PHPExcel导入Excel文件的方法
1.下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel. 2.修改YII配置文件config/main.php 'import'= ...
- ThinkPhp 使用PhpExcel导出导入多语言文件
在ThinkPHP 里已经实现了多语言功能,只要在指定的目录下创建对应的语言文件并填充内容,即可实现多语言功能 而多语言的翻译却是一个很麻烦的事情,因为客户特定的行业问题导致我们翻译可能是不准确的 于 ...
- ajax实现下载功能
ajax实现下载功能 适用场景:由于点击按钮下载excel响应时间过长,此时间段加入加载样式(灰色层.加载动画): 浏览器弹出下载框后,上面的加载样式去掉. 方 法 :使用jquery.fi ...
- php 导出excel文件
out_excel.php <?phperror_reporting(E_ALL);date_default_timezone_set('Asia/Shanghai');require_once ...
- 数据库导入Exel,输入到浏览器
db.php <?php require dirname(__FILE__)."/dbconfig.php";//引入配置文件 class db{ public $conn= ...
随机推荐
- 2016 年 50 个最佳的轻量级 JavaScript 框架和库
作者:IT程序狮链接:https://zhuanlan.zhihu.com/p/24598210来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 回顾今年已发布的 JS ...
- maven settings.xml 阿里云
<?xml version="1.0" encoding="UTF-8"?> <!--Licensed to the Apache Softw ...
- iOS UITableViewCell的"滑动出现多个按钮"
本文授权转载,作者:@夏天是个大人了 前言: 本篇博客其实就是想介绍tableviewcell滑动的一些"事",昨天在逛github的时候看到的还挺有意思的三方库,简单用了一下感觉 ...
- 自动化测试selenium----css选择器总结
选择器 示例 描述 * * 匹配任何元素 element DIV 标签选择器,匹配所有使用DIV标签的元素 .class .tips class选择器,匹配所有class属性中包含info的元素 ...
- 正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...
- JavaS:网页中的显示和隐藏
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- java替换包含html标签
说明一下,该文档内容抄自开源中国里的谋篇文章,由于抄袭时间过于久远,已经找不到博主了!暂不能说明出处,源码博主看见勿气,皆可联系本人! 我的博客,文章属于个人收藏,以解日后需要之急! package ...
- OpenStack学习参考
预备知识 Python 调试手段.日志:pdb 开源框架 Django 面向对象:类.继承.多态 编码规范 搭建环境 安装docker,下载openstack镜像,关于docker参考 使用fuel来 ...
- 2.Linux如何学习
Linux的应用: 企业应用 个人应用 平行运算:所谓的平行运算指的是将原本的工作分成多份然后交给多台主机去运算,最终再将结果收集起来的一种方式.由于通过高速网络使用到多台主机(集群),将原本需要很长 ...
- 控制反转IOC的依赖注入方式
引言: 项目中遇到关于IOC的一些内容,因为和正常的逻辑代码比较起来,IOC有点反常.因此本文记录IOC的一些基础知识,并附有相应的简单实例,而在实际项目中再复杂的应用也只是在基本应用的基础上扩展而来 ...