Nie można załadować pliku Excela w Yii2
Nov 19 2020
Używam arkusza kalkulacyjnego PHP do odczytywania pliku programu 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();
}
Ale pojawia się poniżej błąd
Plik „/ usaid / Files / Installation_ Report.xlsx” nie istnieje. F: \ xampp \ htdocs \ usaid \ vendor \ phpoffice \ phpspreadsheet \ src \ PhpSpreadsheet \ Shared \ File.php
Ścieżka jest
F:\xampp\htdocs\usaid\Files
Zaktualizuj 1
Zgodnie z tą odpowiedzią próbowałem zmienić kod
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();
}
}
Teraz dostaję

InvalidArgumentException Plik „usaid / Files / Installation_Report.xlsx” nie istnieje.
Uwaga: próbowano nawet z takim $inputFileName = Yii::$app->basePath.'\Files\Installation_Report.xlsx';
samym wynikiem
Odpowiedzi
1 Nicoweb Nov 28 2020 at 01:02
realpath(Yii::$app->basePath).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'Files'.DIRECTORY_SEPARATOR.'Installation_Report.xlsx';
- użyj stałej DIRECTORY_SEPARATOR zamiast „/”.
- wynik powinien wyglądać tak: „F: \ xampp \ htdocs \ usaid \ Files \ Installation_Report.xlsx”
UrmatZhenaliev Nov 22 2020 at 04:00
- Nie mieszaj separatorów katalogów linux i windows. Windows używa
\
, podczas gdy Linux używa/
- Z katalogu, w którym znajduje się twój plik Excela, wykonaj
dir
polecenie w terminalu, aby sprawdzić, czy plik naprawdę istnieje. Eksplorator plików systemu Windows może wyświetlać nazwę pliku bez rozszerzenia. Więc sprawdź, czy plik nie ma nazwy jakInstallation_Report.xlsx.xlsx
- Spróbuj użyć
realpath(Yii::$app->basePath) . '/Files/Installation_Report.xlsx';
- Spróbuj skopiować nazwę pliku bezpośrednio z eksploratora i wkleić w swojej aplikacji. Być może występuje kolizja symboli alfabetu łacińskiego / cyrylicy / innych alfabetów