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
- Verwirren Sie keine Linux- und Windows-Verzeichnis-Trennzeichen. Windows verwendet
\
, während Linux verwendet/
- Führen Sie in dem Verzeichnis, in dem sich Ihre Excel-Datei befindet, den
dir
Befehl 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
- Versuchen zu benutzen
realpath(Yii::$app->basePath) . '/Files/Installation_Report.xlsx';
- 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