PHPSReadSheet-如何使用自动迁移工具
我是一个长期的读者,但不习惯问问题。如果我问错了,请纠正我 简介 我们正在将服务器从PHP5.4升级到PHP7.2,其中一个与新版PHP不完全兼容的库是PHPExcel。因此,我们也在升级到PHPSpreadsheet。我们的许多项目以不同的方式使用PHPExcel,因此,如果我能让自动迁移工具工作,即使它遗漏了一些东西,也会为我节省大量时间 以下是使用该工具的说明: 他们只是说在安装via Composer后使用以下命令(我已经完成了): 问题 我可以很好地执行migrator,但它只扫描“vendor/phpoffice/phpspreadsheet”目录中的文件。它根本不会扫描项目中的任何文件PHPSReadSheet-如何使用自动迁移工具,php,migration,phpspreadsheet,Php,Migration,Phpspreadsheet,我是一个长期的读者,但不习惯问问题。如果我问错了,请纠正我 简介 我们正在将服务器从PHP5.4升级到PHP7.2,其中一个与新版PHP不完全兼容的库是PHPExcel。因此,我们也在升级到PHPSpreadsheet。我们的许多项目以不同的方式使用PHPExcel,因此,如果我能让自动迁移工具工作,即使它遗漏了一些东西,也会为我节省大量时间 以下是使用该工具的说明: 他们只是说在安装via Composer后使用以下命令(我已经完成了): 问题 我可以很好地执行migrator,但它只扫描“
如何让迁移脚本扫描我的项目文件,而不是它自己的文件
当地环境
cd C:\path\to\project\that\uses\phpexcel
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
cd C:\path\to\project\that\uses\phpexcel
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
到目前为止我是如何尝试解决的
我不知道您是如何或从何处运行第二个命令的,但该命令遍历了我的整个项目,并进行了看起来合适的转换。当我在IDE中时,我从项目根运行它(PhpStorm,使用它的“Run命令”工具)。我执行了与您相同的命令,如下所示:
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
确认“是”后,我看到它遍历目录,更改各种文件,但跳过自己的文件。
当我测试我的脚本时,我从它的一个模块(Coordinate.php第312行和第313行)中遇到了关于“非数值”的警告。我对警告做了一些研究,但除了有人指责PHP7.1**(我运行的是7.2**)之外,找不到任何解决方法。所以我抑制了警告,我的电子表格完全按照我指定的方式创建。
以下是我在“创建excel”脚本中的第一句话:
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
我唯一需要做的另一个“手动”更改是将“createWriter”的文件格式从“Excel2007”更改为“Xlsx”——正如文档中所述。更复杂的电子表格可能需要更多的手动工作,但可能没有上面提到的那么多。Discalimer:我编写了一个工具,可以处理从CLI进行的自动迁移,称为Rector,这样人们就不必再手动升级PHP代码了
官方迁移工具只修复类名。还有24个案例需要修改,利克提到“Excel2007”改为“Xlsx” 我们需要升级庞大的PHP项目,手动更改会花费太多时间,可能会让我们陷入数周的困境。相反,我们对所有25个案例进行了升级,这改变了我们的代码:
composer require rector/rector --dev
vendor/bin/rector process src --set phpexcel-to-phpspreadsheet
如果您想阅读更多内容,我怀疑,通过简单地运行迁移工具,您的PHPExcel原始代码是否也适用于SpreadsheetExcel。根据我的经验,“大量的代码重写”需要完成,而不仅仅是重命名几个函数。我建议继续使用phpexcellibrary(1.8.1+),它也应该适用于php7+版本,除非您有足够的时间。