Impor EXCEL terjadi pengecualian di PHP7.4,
Pengecualian-> pesan () adalah:
Mencoba mengakses array offset pada nilai tipe int.
Perilaku yang diharapkan:
impor file xlsx saat saya menjalankan kode di php72w
Perilaku sebenarnya:
terjadi setelah saya mengunggah keadaan server saya dari php7.2 ke php7.4 ketika saya mengimpor Excel akan gagal seperti di atas.
akan normal kembali jika saya downgrade dari php7.4 ke php7.2.
$extension=$request->file()['file']->getClientOriginalExtension();
$extension[0] = strtoupper($extension[0]);
Excel::import(new RejectedImport(), $request->file()['file']->path(),null,$extension);
Dan apa yang ada di Kelas Impor:
<?php
namespace App\Imports;
use App\Commodity;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class CommodityImport implements ToCollection, WithHeadingRow
{
protected $isOverride=false;
public function __construct($isOverride)
{
if($isOverride=='1')
$this->isOverride=true;
}
/**
* <strong i="26">@param</strong> Collection $collections
*/
public function collection(Collection $collections)
{
foreach ($collections as $row)
{
$barcode = $row['barcode'] ?? $row['BARCODE'] ?? $row['Barcode'];
if(!$barcode)continue;
$name = $row['name'] ?? $row['NAME'] ?? $row['Name'] ?? '';
$sku = $row['sku'] ?? $row['SKU'] ?? $row['Sku'] ?? '';
$owner = $row['owner'] ?? $row['owner_name'] ?? $row['OWNER'] ?? $row['Owner'] ?? '';
$commodity=Commodity::where('barcode',$row['barcode'])->first();
if($commodity){
if($this->isOverride){
$name?$commodity['name']= $name:false;
$sku?$commodity['sku']= $sku:false;
$owner?$commodity['owner_name']= $owner:false;
$commodity->update();
}
}else{
Commodity::create([
'name' => $name,
'sku' => $sku,
'owner_name' => $owner,
'barcode' => $barcode,
]);
}
}
}
}
Terima kasih telah mengirimkan tiketnya. Sayangnya informasi yang Anda berikan tidak lengkap. Kami perlu mengetahui versi mana yang Anda gunakan dan bagaimana mereproduksinya. Harap sertakan contoh kode. Sebelum kami dapat mengambilnya, harap periksa (https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/.github/ISSUE_TEMPLATE.md) dan tambahkan informasi yang kurang. Untuk membuat pemrosesan tiket ini jauh lebih mudah, pastikan untuk memeriksa (https://laravel-excel.maatwebsite.nl/3.1/getting-started/contributing.html) dan periksa kembali apakah Anda telah mengisi template terbitan benar. Ini akan memungkinkan kami mengambil tiket Anda dengan lebih efisien. Masalah yang mengikuti pedoman dengan benar akan mendapatkan prioritas di atas masalah lainnya.
Dapatkah Anda menampilkan lebih banyak stacktrace, saya tidak dapat mengonfirmasi bug saat menggunakan paket di PHP7.4. Mungkin itu sesuatu di kode Anda sendiri?
Hai @patrickbrouwers terima kasih atas paketnya, saya penggemar beratnya!
Saya mendapatkan kesalahan serupa setelah memutakhirkan, meskipun selama ekspor, dan stacktrace menunjukkan masalahnya ada pada phpsreadsheet, bukan Laravel-Excel, tetapi Google membawa saya ke sini.
Inilah stacktrace:
#0 /vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php(56): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
#1 /vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/DefaultValueBinder.php(34): PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder::dataTypeForValue()
#2 /vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Cell/Cell.php(184): PhpOffice\\PhpSpreadsheet\\Cell\\DefaultValueBinder->bindValue()
#3 /vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php(2510): PhpOffice\\PhpSpreadsheet\\Cell\\Cell->setValue()
#4 /vendor/maatwebsite/excel/src/Sheet.php(402): PhpOffice\\PhpSpreadsheet\\Worksheet\\Worksheet->fromArray()
#5 /vendor/maatwebsite/excel/src/Sheet.php(502): Maatwebsite\\Excel\\Sheet->append()
#6 /vendor/maatwebsite/excel/src/Sheet.php(368): Maatwebsite\\Excel\\Sheet->appendRows()
#7 /vendor/maatwebsite/excel/src/Sheet.php(195): Maatwebsite\\Excel\\Sheet->fromCollection()
#8 /vendor/maatwebsite/excel/src/Writer.php(73): Maatwebsite\\Excel\\Sheet->export()
#9 /vendor/maatwebsite/excel/src/Excel.php(176): Maatwebsite\\Excel\\Writer->export()
#10 /vendor/maatwebsite/excel/src/Excel.php(97): Maatwebsite\\Excel\\Excel->export()
#11 /app/Console/Commands/EmailCardRequestList.php(89): Maatwebsite\\Excel\\Excel->store()
Diperbaiki di PhpSpreadsheet, lihat https://github.com/PHPOffice/PhpSpreadsheet/issues/1300
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
DefaultValueBinder.php di dalam folder vendor? atau dimana itu? Masalah yang sama disini.
DefaultValueBinder.php di dalam folder vendor? atau dimana itu? Masalah yang sama disini.
Permintaan maaf saya. Saya seharusnya lebih spesifik. Dalam instalasi saya, itu terletak di folder PHPExcel di lokasi ini: PHPExcel \ Cell \ DefaultValueBinder.php
Ini mungkin berbeda dari instalasi Anda. Tetapi Anda harus dapat menjalankan pencariannya di sistem Anda.
baris yang menurut saya adalah 62, bukan 82 teman saya! dan saya berharap itu akan berhasil karena saya stres. Saya tidak dapat menemukan solusi untuk kesalahan dalam proyek saya: Kesalahan ERROR: Mencoba mengakses array offset pada nilai tipe int '/ Cell / DefaultValueBinder. php: 56 '. Saya memiliki harapan yang tinggi!
Ini adalah jalurnya: third_party / PHPExcel / Classes / PHPExcel / Cell / DefaultValueBinder.php
Di sini third_party berarti tempat Anda menyimpan folder PHPExcel Anda
Sekarang cari === '=' dan periksa apakah ada baris yang cocok kemudian ganti dengan yang khusus itu
0 === strpos ($ pValue, '=')
Istirahat akan sama. Dalam kasus saya itu
$ pValue [0] === '='
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
berhasil! cinta kamu!
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
Ketika saya hampir menurunkan versi ke PHP 7.3, terima kasih, ini membantu saya
Adakah ide untuk menyelesaikan masalah ini dengan PHP 7.4.3 & maatwebsite / excel versi 2.1?
Anda harus membayar paket phpexcel yang sudah tidak digunakan lagi dan mengelola sendiri garpu tersebut.
} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {
strpos of bool, rly?
Letakkan saja kode ini setelah dicentang ke is_bool dan is_float
Kode bukan bagian dari paket ini, tetapi dari PhpExcel lama
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
Terima kasih kawan. Menyukainya. Thankx @burello <3
Hal terbaik yang harus dilakukan adalah memperbarui PHPOffice/PhpSpreadsheet
atas 1,10 dalam proyek Anda - karena Kesalahan ini akan diperbaiki tanpa harus mengedit basis kode paket secara manual. Jadi bagi saya
composer require phpoffice/phpspreadsheet "^1.10"
memperbaiki masalah.
Saya juga mengalami kesalahan ini
sudah tidak mengerti
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
Terima kasih bekerja untuk saya !! orderimportexport.ocmod opencart 3x
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.
Luar biasa, Anda menyelamatkan saya bro, terima kasih banyak
ganti baris ini 82:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
bekerja untukku ...
Laporkan kesalahan dalam PhpSpreadsheet ke PhpSpreadsheet.
Komentar yang paling membantu
Di file PHPExcel "DefaultValueBinder.php", ganti baris 82 ini:
} elseif ($ pValue [0] === '=' && strlen ($ pValue)> 1) {
dengan berikut ini:
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
Ini akan memperbaiki kesalahan "Mencoba mengakses array offset pada nilai tipe int". Tetapi Anda juga perlu melakukan pencarian dan penggantian untuk kurung kurawal di seluruh kode PHPExcel untuk mengatasi kesalahan "Array dan string akses offset sintaks dengan kurung kurawal tidak berlaku lagi" yang juga mempengaruhi PHP ugrades ke 7.4. Saya hanya menggantinya dengan "[" dan "]" di mana-mana dan semuanya berfungsi dengan baik lagi.