PHPSpreadsheet-如何使用自动迁移工具

时间:2018-11-08 20:02:34

标签: php migration phpspreadsheet

我是位长期阅读者,但是刚开始问问题。如果我有不正确的问题,请纠正我。

简介

我们正在将服务器从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”目录中的文件。它根本不扫描项目中的任何文件。


如何获取迁移脚本来扫描项目文件,而不是扫描自己的文件?


本地环境

  1. Windows 10
  2. 最新的XAMPP
  3. PHP 7.2.11

我如何运行

cd C:\path\to\project\that\uses\phpexcel
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel

到目前为止我是如何尝试的

  1. 在说明页面上运行确切的命令(最终运行两个命令,第二个是无效命令)
  2. 将“从phpexcel迁移”到我的项目根目录并在其中运行
  3. 移动到项目根目录并指向Bootstrap.php文件后,编辑“ migrate-from-phpexcel”(运行,但仅在库本身内部。同样的问题)

2 个答案:

答案 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