无需Composer,能否将OpenSpout接入PHP项目?
如何不通过Composer手动安装OpenSpout替代旧版box/spout?
可以手动安装OpenSpout,完全不需要走Composer流程,步骤和你之前用box/spout的方式类似,只是需要自己处理自动加载部分:
下载核心代码
从OpenSpout的官方代码仓库获取最新稳定版的源代码,解压后只保留src目录下的所有文件,把这个src目录复制到你项目的合适位置(比如libs/openspout/src)。手动实现自动加载
OpenSpout遵循PSR-4自动加载规范,命名空间OpenSpout对应你复制的src目录。你可以自己写一个简单的自动加载函数,替代旧版的Autoloader.php:spl_autoload_register(function ($className) { // 替换成你项目中OpenSpout src目录的实际路径 $openspoutSrcPath = __DIR__ . '/libs/openspout/src/'; $namespacePrefix = 'OpenSpout\\'; if (strpos($className, $namespacePrefix) !== 0) { return; } $relativeClass = substr($className, strlen($namespacePrefix)); $filePath = $openspoutSrcPath . str_replace('\\', '/', $relativeClass) . '.php'; if (is_file($filePath)) { require $filePath; } });把这段代码放到项目的公共初始化文件里,或者在需要使用OpenSpout的PHP文件开头直接引入。
替换旧代码的命名空间
把项目中原来的Box\Spout命名空间全部替换为OpenSpout,比如:
原来的use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
改成use OpenSpout\Reader\Common\Creator\ReaderEntityFactory;
大部分API和旧版box/spout兼容,业务逻辑基本不需要修改。检查依赖要求
确保你的PHP版本满足OpenSpout的要求(当前稳定版要求PHP 7.4及以上),同时开启PHP的zip和xmlreader扩展,这两个是读取Excel文件必需的。
内容的提问来源于stack exchange,提问作者Brienne Schroth
相关产品推荐
相关产品推荐

