Impossible de charger le fichier Excel dans Yii2

Nov 19 2020

J'utilise une feuille de calcul PHP pour lire un fichier Excel

$inputFileName = '/usaid/Files/Installation_Report.xlsx'; $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();

try
{
    /** Load $inputFileName to a Spreadsheet Object **/ $spreadsheet = $reader->load($inputFileName);

    print_r($spreadsheet); exit(); } catch (\Exception $exception) {
    print_r($exception->getMessage() . $exception->getFile());
    exit();
}

Mais je reçois une erreur en dessous

Le fichier "/ usaid / Files / Installation_ Report.xlsx" n'existe pas F: \ xampp \ htdocs \ usaid \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Shared \ File.php

Le chemin est

F:\xampp\htdocs\usaid\Files

Mise à jour 1

Selon cette réponse, j'ai essayé de changer le code

 public function actionRun()
{

    $inputFileName = 'usaid/Files/Installation_Report.xlsx'; /** Identify the type of $inputFileName  **/
    $inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($inputFileName);

    try
    {

        /**  Create a new Reader of the type that has been identified  **/
        $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);

        /**  Load $inputFileName to a Spreadsheet Object **/ $spreadsheet = $reader->load($inputFileName);

        /**  Convert Spreadsheet Object to an Array for ease of use  **/
        $schdeules = $spreadsheet->getActiveSheet()->toArray();
        //$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);

        var_dump($schdeules); die(); } catch (\Exception $exception)
    {
        print_r($exception->getMessage() . $exception->getFile());
        exit();
    }


}

Maintenant je reçois

InvalidArgumentException Le fichier "usaid / Files / Installation_Report.xlsx" n'existe pas.

Remarque: essayé même avec le $inputFileName = Yii::$app->basePath.'\Files\Installation_Report.xlsx';même résultat

Réponses

1 Nicoweb Nov 28 2020 at 01:02
realpath(Yii::$app->basePath).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Files'.DIRECTORY_SEPARATOR.'Installation_Report.xlsx';
  • utilisez la constante DIRECTORY_SEPARATOR au lieu de '/'.
  • le résultat doit être: "F: \ xampp \ htdocs \ usaid \ Files \ Installation_Report.xlsx"
UrmatZhenaliev Nov 22 2020 at 04:00
  1. Ne gâchez pas les séparateurs de répertoires Linux et Windows. Windows utilise \, tandis que Linux utilise/
  2. À partir du répertoire où se trouve votre fichier Excel, exécutez la dircommande dans le terminal pour vérifier que le fichier existe vraiment. L'explorateur de fichiers Windows peut afficher le nom du fichier sans l'extension. Vérifiez donc que le fichier n'est pas nommé commeInstallation_Report.xlsx.xlsx
  3. Essayez d'utiliser realpath(Yii::$app->basePath) . '/Files/Installation_Report.xlsx';
  4. Essayez de copier le nom du fichier directement depuis l'explorateur et collez-le dans votre application. Peut-être qu'il y a collision sur les symboles de l'alphabet latin / cyrillique / tout autre alphabets