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

PHPSReadSheet-如何使用自动迁移工具,php,migration,phpspreadsheet,Php,Migration,Phpspreadsheet,我是一个长期的读者,但不习惯问问题。如果我问错了,请纠正我 简介 我们正在将服务器从PHP5.4升级到PHP7.2,其中一个与新版PHP不完全兼容的库是PHPExcel。因此,我们也在升级到PHPSpreadsheet。我们的许多项目以不同的方式使用PHPExcel,因此,如果我能让自动迁移工具工作,即使它遗漏了一些东西,也会为我节省大量时间 以下是使用该工具的说明: 他们只是说在安装via Composer后使用以下命令(我已经完成了): 问题 我可以很好地执行migrator,但它只扫描“

我是一个长期的读者,但不习惯问问题。如果我问错了,请纠正我

简介

我们正在将服务器从PHP5.4升级到PHP7.2,其中一个与新版PHP不完全兼容的库是PHPExcel。因此,我们也在升级到PHPSpreadsheet。我们的许多项目以不同的方式使用PHPExcel,因此,如果我能让自动迁移工具工作,即使它遗漏了一些东西,也会为我节省大量时间

以下是使用该工具的说明:

他们只是说在安装via Composer后使用以下命令(我已经完成了):

问题

我可以很好地执行migrator,但它只扫描“vendor/phpoffice/phpspreadsheet”目录中的文件。它根本不会扫描项目中的任何文件


如何让迁移脚本扫描我的项目文件,而不是它自己的文件


当地环境

cd C:\path\to\project\that\uses\phpexcel
php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
  • 视窗10
  • 最新XAMPP
  • PHP 7.2.11
  • 我是如何运行它的

    cd C:\path\to\project\that\uses\phpexcel
    php vendor\phpoffice\phpspreadsheet\bin\migrate-from-phpexcel
    
    到目前为止我是如何尝试解决的

  • 运行“说明”页面上的确切命令(最终运行两个命令,第二个命令无效)
  • 将“从phpexcel迁移”移动到我的项目根目录并在那里运行它
  • 在移动到项目根目录并指向Bootstrap.php文件(运行,但仅在库本身内部运行)后编辑“从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+版本,除非您有足够的时间。