我是位长期阅读者,但是刚开始问问题。如果我有不正确的问题,请纠正我。
简介
我们正在将服务器从PHP 5.4升级到PHP 7.2,与PHP新版本不完全兼容的库之一是PHPExcel。因此,我们也将升级到PHPSpreadsheet。我们的许多项目以不同的方式使用PHPExcel,因此,如果我可以使用自动迁移工具,即使我错过了一些东西,对我来说也将节省大量时间。
使用该工具的说明位于: https://phpspreadsheet.readthedocs.io/en/develop/topics/migration-from-PHPExcel/
他们只是说要通过Composer安装后使用以下命令(我已经完成了):
cd /project/to/migrate/src
/project/to/migrate/vendor/phpoffice/phpspreadsheet/bin/migrate-from-phpexcel
问题
我能够很好地执行迁移器,但是它只扫描“ vendor / phpoffice / phpspreadsheet”目录中的文件。它根本不扫描项目中的任何文件。
如何获取迁移脚本来扫描项目文件,而不是扫描自己的文件?
本地环境
我如何运行
cd C:\path\to\project\that\uses\phpexcel
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
到目前为止我是如何尝试的
答案 0 :(得分:0)
我不知道您如何或从何处运行了第二个命令,但该命令遍历了我的整个项目并进行了适当的转换。在IDE中时,我是从项目根目录运行它的(PhpStorm,使用其“运行命令”工具)。我执行了与您相同的命令,如下所示:
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
在确认“是”之后,我看到它遍历目录,更改了各种文件,但跳过了其OWN文件。 测试脚本时,我从其模块之一(第312行和第313行的 Coordinate.php )遇到了有关“非数值”的警告。我对警告进行了一些研究,但除了有人指责PHP 7.1 **(我正在运行7.2。*)之外,找不到其他解决方法。因此,我取消了警告,并完全按照我的指定创建了电子表格。 这是我在“ create excel”脚本中的第一个语句:
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
我唯一要做的另一项“手动”更改是将“ createWriter”的文件格式从“ Excel2007”更改为“ Xlsx”,这与文档中的说明完全相同。更复杂的电子表格可能需要更多的人工工作,但可能不如上述人员那么多。
答案 1 :(得分:0)
Discalimer:我编写了一个工具,用于处理从CLI进行的自动迁移,称为Rector,因此人们不必再手动升级PHP代码。 It's free, open-source, on GitHub。
官方迁移工具仅修复类名。还有24种情况需要更改,就像提到的“ Excel2007”到“ Xlsx”一样。
我们需要升级庞大的PHP项目,手动更改将花费太多时间,并可能使我们停留数周。相反,我们制作了一个包含所有25种情况的升级集,为我们更改了代码:
composer require rector/rector --dev
vendor/bin/rector process src --set phpexcel-to-phpspreadsheet
如果您想了解更多信息,请we wrote a short post about it