Laravel-excel: [버그] Import EXCEL이 PHP7.4μ—μ„œ μ˜ˆμ™Έ λ°œμƒ, 응닡 : int μœ ν˜•μ˜ 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„

에 λ§Œλ“  2019λ…„ 12μ›” 05일  Β·  24μ½”λ©˜νŠΈ  Β·  좜처: Maatwebsite/Laravel-Excel

버전

  • PHP 버전 : PHP7.4 (Centos7 yum μ„€μΉ˜ php74 양식 remisrepo μ•ˆμ • 버전)
  • Laravel 버전 : Laravel Framework 5.8.35
  • νŒ¨ν‚€μ§€ 버전 : maatwebsite / excel 3.1.17

기술

Import EXCEL은 PHP7.4μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.
μ˜ˆμ™Έ-> message ()λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
int μœ ν˜•μ˜ 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹μ— μ•‘μ„ΈμŠ€ν•˜λ €κ³ ν•©λ‹ˆλ‹€.

μž¬ν˜„ 단계

μ˜ˆμƒλ˜λŠ” λ™μž‘ :

php72wμ—μ„œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄μ„œ xlsx 파일 κ°€μ Έ 였기

μ‹€μ œ 행동 :
Excel을 κ°€μ Έμ˜¬ λ•Œ php7.2μ—μ„œ php7.4둜 μ„œλ²„ ν™˜κ²½μ„ μ—…λ‘œλ“œ ν•œ ν›„ μœ„μ™€ 같이 μ‹€νŒ¨ν•©λ‹ˆλ‹€.

php7.4μ—μ„œ php7.2둜 λ‹€μš΄ κ·Έλ ˆμ΄λ“œν•˜λ©΄ λ‹€μ‹œ μ •μƒμž…λ‹ˆλ‹€.

μΆ”κ°€ 정보

$extension=$request->file()['file']->getClientOriginalExtension();
$extension[0] = strtoupper($extension[0]);
Excel::import(new RejectedImport(), $request->file()['file']->path(),null,$extension);

그리고 Import Classμ—μžˆλŠ” 것 :

<?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,
                ]);
            }
        }
    }
}

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

λͺ¨λ“  24 λŒ“κΈ€

티켓을 μ œμΆœν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ œκ³΅ν•˜μ‹  정보가 λΆˆμ™„μ „ν•©λ‹ˆλ‹€. μ–΄λ–€ 버전을 μ‚¬μš©ν•˜κ³  μ–΄λ–»κ²Œ μž¬ν˜„ν•˜λŠ”μ§€ μ•Œμ•„μ•Όν•©λ‹ˆλ‹€. μ½”λ“œ 예제λ₯Ό ν¬ν•¨ν•˜μ‹­μ‹œμ˜€. μˆ˜λ Ήν•˜κΈ° 전에 (https://github.com/Maatwebsite/Laravel-Excel/blob/3.1/.github/ISSUE_TEMPLATE.md) ν™•μΈν•˜κ³  λˆ„λ½ 된 정보λ₯Ό μΆ”κ°€ν•˜μ‹­μ‹œμ˜€. 이 티켓을 더 μ‰½κ²Œ μ²˜λ¦¬ν•˜λ €λ©΄ (https://laravel-excel.maatwebsite.nl/3.1/getting-started/contributing.html) ν™•μΈν•˜κ³  문제 ν…œν”Œλ¦Ώμ„ μž‘μ„±ν–ˆλŠ”μ§€ λ‹€μ‹œ ν™•μΈν•˜μ‹­μ‹œμ˜€. λ°”λ₯΄κ²Œ. μ΄λ ‡κ²Œν•˜λ©΄ 티켓을보닀 효율적으둜 수령 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 지침을 μ˜¬λ°”λ₯΄κ²Œ λ”°λ₯΄λŠ” λ¬Έμ œλŠ” λ‹€λ₯Έ λ¬Έμ œλ³΄λ‹€ μš°μ„ ν•©λ‹ˆλ‹€.

μ’€ 더 μŠ€νƒ 트레이슀λ₯Ό 보여 μ£Όμ‹€ 수 μžˆλ‚˜μš”? PHP7.4μ—μ„œ νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•  λ•Œ 버그λ₯Ό 확인할 수 μ—†μŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‹Ήμ‹  μžμ‹ μ˜ μ½”λ“œμ—μžˆλŠ” κ²ƒμΌκΉŒ μš”?

μ•ˆλ…•ν•˜μ„Έμš” @patrickbrouwers νŒ¨ν‚€μ§€μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. μ €λŠ” κ·Έκ²ƒμ˜ 큰 νŒ¬μž…λ‹ˆλ‹€!

내보내기 μ€‘μ΄μ§€λ§Œ μ—…κ·Έλ ˆμ΄λ“œ ν›„ λΉ„μŠ·ν•œ 였λ₯˜κ°€ λ°œμƒν•˜κ³  stacktraceλŠ” λ¬Έμ œκ°€ Laravel-Excel이 μ•„λ‹Œ phpsreadsheet에 μžˆμŒμ„ λ‚˜νƒ€λ‚΄μ§€ 만 Google이 λ‚˜λ₯Ό μ—¬κΈ°λ‘œ κ°€μ Έ μ™”μŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ μŠ€νƒ μΆ”μ μž…λ‹ˆλ‹€.

#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()

PhpSpreadsheetμ—μ„œ μˆ˜μ • 됨, https://github.com/PHPOffice/PhpSpreadsheet/issues/1300 μ°Έμ‘°

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

곡급 업체 폴더 λ‚΄λΆ€μ˜ DefaultValueBinder.php? μ•„λ‹ˆλ©΄ 어디에 μžˆμŠ΅λ‹ˆκΉŒ? 여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

곡급 업체 폴더 λ‚΄λΆ€μ˜ DefaultValueBinder.php? μ•„λ‹ˆλ©΄ 어디에 μžˆμŠ΅λ‹ˆκΉŒ? 여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ£„μ†‘ν•©λ‹ˆλ‹€. λ‚˜λŠ” 더 κ΅¬μ²΄μ μ΄μ–΄μ•Όν–ˆλ‹€. λ‚΄ μ„€μΉ˜μ—μ„œ λ‹€μŒ μœ„μΉ˜μ˜ PHPExcel 폴더에 μžˆμŠ΅λ‹ˆλ‹€. PHPExcel \ Cell \ DefaultValueBinder.php
μ„€μΉ˜μ— 따라 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‹œμŠ€ν…œμ—μ„œ 검색을 μ‹€ν–‰ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

λ‚΄κ°€ μƒκ°ν•˜λŠ” 라인은 82κ°€ μ•„λ‹ˆλΌ 62μž…λ‹ˆλ‹€. 슀트레슀λ₯Ό λ°›μœΌλ‹ˆκΉŒ 잘 되길 λ°”λž˜μš”. λ‚΄ ν”„λ‘œμ νŠΈμ—μ„œ 였λ₯˜μ— λŒ€ν•œ 해결책을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. 였λ₯˜ 였λ₯˜ : int '/ Cell / DefaultValueBinder μœ ν˜•μ˜ κ°’μ—μ„œ λ°°μ—΄ μ˜€ν”„μ…‹μ— μ•‘μ„ΈμŠ€ν•˜λ €κ³ ν•©λ‹ˆλ‹€. php : 56 '. λ‚˜λŠ” 높은 ν¬λ§μ΄μžˆλ‹€!

경둜 : third_party / PHPExcel / Classes / PHPExcel / Cell / DefaultValueBinder.php
μ—¬κΈ°μ„œ third_partyλŠ” PHPExcel 폴더λ₯Ό 보관 ν•œ μœ„μΉ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

이제 === '='λ₯Ό κ²€μƒ‰ν•˜κ³  μΌμΉ˜ν•˜λŠ” 쀄이 μžˆλŠ”μ§€ ν™•μΈν•œ λ‹€μŒ νŠΉμ • μ€„λ‘œ λ°”κΏ‰λ‹ˆλ‹€.
0 === strpos ($ pValue, '=')
νœ΄μ‹μ€ λ™μΌν•©λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ”
$ pValue [0] === '='

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

νš¨κ³Όκ°€μžˆλ‹€! 당신을 μ‚¬λž‘ν•©λ‹ˆλ‹€!

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

PHP 7.3으둜 거의 λ‹€μš΄ κ·Έλ ˆμ΄λ“œ ν•  λ•Œ λ„μ›€μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

PHP 7.4.3 및 maatwebsite / excel 버전 2.1둜이 문제λ₯Ό ν•΄κ²°ν•  아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” phpexcel νŒ¨ν‚€μ§€λ₯Ό ν¬ν¬ν•˜κ³  포크λ₯Ό 직접 μœ μ§€ κ΄€λ¦¬ν•΄μ•Όν•©λ‹ˆλ‹€.

} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {

bool의 strpos, rly?

is_bool 및 is_float 확인 후이 μ½”λ“œλ₯Ό λ„£μœΌμ‹­μ‹œμ˜€.

μ½”λ“œλŠ”μ΄ νŒ¨ν‚€μ§€μ˜ 일뢀가 μ•„λ‹ˆλΌ λ ˆκ±°μ‹œ PhpExcel의 μΌλΆ€μž…λ‹ˆλ‹€.

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

κ³ λ§ˆμ›Œμš”. 그것을 μ‚¬λž‘. κ°μ‚¬ν•©λ‹ˆλ‹€ @burello <3

κ°€μž₯ 쒋은 방법은 ν”„λ‘œμ νŠΈμ—μ„œ PHPOffice/PhpSpreadsheet 1.10 μ΄μƒμœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. νŒ¨ν‚€μ§€ μ½”λ“œλ² μ΄μŠ€λ₯Ό μˆ˜λ™μœΌλ‘œ νŽΈμ§‘ ν•  ν•„μš”μ—†μ΄μ΄ 였λ₯˜κ°€ μˆ˜μ •λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λ‚˜λ₯Ό μœ„ν•΄

composer require phpoffice/phpspreadsheet "^1.10"

문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λ„μ΄ 였λ₯˜κ°€μžˆλ‹€

이미 λ‹¨μ„œκ°€ μ—†λ‹€

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

μ €λ₯Ό μœ„ν•΄ 일해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! orderimportexport.ocmod opencart 3x

PHPExcel 파일 "DefaultValueBinder.php"μ—μ„œ λ‹€μŒ 쀄 82λ₯Ό λ°”κΏ‰λ‹ˆλ‹€.
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {
μ΄λ ‡κ²Œν•˜λ©΄ "int μœ ν˜• 값에 λŒ€ν•œ λ°°μ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ μ‹œλ„"였λ₯˜κ°€ μˆ˜μ •λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λŠ” λ°°μ—΄ 및 λ¬Έμžμ—΄ μ˜€ν”„μ…‹ μ•‘μ„ΈμŠ€ ꡬ문은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€"였λ₯˜λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ PHPExcel μ½”λ“œ μ „μ²΄μ—μ„œ μ€‘κ΄„ν˜Έλ₯Ό μ°Ύμ•„μ„œ κ΅μ²΄ν•΄μ•Όν•©λ‹ˆλ‹€.이 였λ₯˜λŠ” λ˜ν•œ PHPλ₯Ό 7.4둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 데 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. λͺ¨λ“  κ³³μ—μ„œ "["및 "]"둜 λŒ€μ²΄ν•˜κ³  λͺ¨λ“  것이 λ‹€μ‹œ μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

λ†€λžλ‹€, λ„Œ λ‚  ꡬ해 쀬어, 정말 κ³ λ§ˆμ›Œ

이 쀄을 λ°”κΏ‰λ‹ˆλ‹€ 82 :
} elseif ($ pValue [0] === '='&& strlen ($ pValue)> 1) {
λ‹€μŒκ³Ό ν•¨κ»˜ :
} elseif (0 === strpos ($ pValue, '=') && strlen ($ pValue)> 1) {

λ‚˜λ₯Ό μœ„ν•΄ μΌν•˜λŠ” ...

image

PhpSpreadsheet λ‚΄μ˜ 였λ₯˜λ₯Ό PhpSpreadsheetμ—λ³΄κ³ ν•˜μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰