Excel-Datei in Yii2 kann nicht geladen werden

Nov 19 2020

Ich verwende PHP Spreadsheet , um eine Excel-Datei zu lesen

$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();
}

Aber ich komme unter Fehler

Die Datei "/ usaid / Files / Installation_ Report.xlsx" existiert nicht.F: \ xampp \ htdocs \ usaid \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Shared \ File.php

Der Weg ist

F:\xampp\htdocs\usaid\Files

Update 1

Gemäß dieser Antwort habe ich versucht, den Code zu ändern

 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();
    }


}

Jetzt bekomme ich

InvalidArgumentException-Datei "usaid / Files / Installation_Report.xlsx" existiert nicht.

Hinweis: Versucht sogar mit $inputFileName = Yii::$app->basePath.'\Files\Installation_Report.xlsx';aber gleichem Ergebnis

Antworten

1 Nicoweb Nov 28 2020 at 01:02
realpath(Yii::$app->basePath).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Files'.DIRECTORY_SEPARATOR.'Installation_Report.xlsx';
  • Verwenden Sie die Konstante DIRECTORY_SEPARATOR anstelle von '/'.
  • Das Ergebnis sollte lauten: "F: \ xampp \ htdocs \ usaid \ Files \ Installation_Report.xlsx"
UrmatZhenaliev Nov 22 2020 at 04:00
  1. Verwirren Sie keine Linux- und Windows-Verzeichnis-Trennzeichen. Windows verwendet \, während Linux verwendet/
  2. Führen Sie in dem Verzeichnis, in dem sich Ihre Excel-Datei befindet, den dirBefehl im Terminal aus, um zu überprüfen, ob die Datei tatsächlich vorhanden ist. Der Windows-Datei-Explorer zeigt möglicherweise den Namen der Datei ohne die Erweiterung an. Überprüfen Sie also, ob die Datei nicht den Namen hatInstallation_Report.xlsx.xlsx
  3. Versuchen zu benutzen realpath(Yii::$app->basePath) . '/Files/Installation_Report.xlsx';
  4. Versuchen Sie, den Namen der Datei direkt aus dem Explorer zu kopieren und in Ihre Anwendung einzufügen. Möglicherweise gibt es eine Kollision mit Symbolen des lateinischen Alphabets / Kyrillisch / anderen Alphabeten