Laravel-excel: рдкреНрд░рд╛рд░рдВрдн рдкрдВрдХреНрддрд┐ (2) рдЙрдЪреНрдЪрддрдо рдкрдВрдХреНрддрд┐ рд╕реЗ рдкрд░реЗ рд╣реИ (1)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдирд╡ре░ 2018  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Maatwebsite/Laravel-Excel

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

рдкреАрдПрдЪрдкреА рд╕рдВрд╕реНрдХрд░рдг: 7.2
рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.7
рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг: 3.1

рд╡рд┐рд╡рд░рдг

рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ: 'рдкреНрд░рд╛рд░рдВрдн рдкрдВрдХреНрддрд┐ (2) рдЙрдЪреНрдЪрддрдо рдкрдВрдХреНрддрд┐ (1) рд╕реЗ рдкрд░реЗ рд╣реИ/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ/рд╕рд╛рдЗрдЯ/рдмреНрд▓реЙрдЧ/рд╡рд┐рдХреНрд░реЗрддрд╛/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/RowIterator.php рд╕реЗ

рд╕реНрдкреНрд░реИрдбрд╢реАрдЯ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рдПрдХрд▓ рдкрддреНрд░рдХ рд╣реИред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЦрд╛рд▓реА рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдПред рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛ред

App\Imports\PoliciesImport.php

<?php

namespace App\Imports;

use App\Policy;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
use Auth;


class PoliciesImport implements ToModel, WithValidation, WithHeadingRow, WithMultipleSheets
{

    use Importable;

    /**
    * <strong i="14">@param</strong> array $row
    *
    * <strong i="15">@return</strong> \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Policy([
          'user_id'     => Auth::user()->id,
          'policy_name' => $row['name'],
          'phone'       => $row['phone'],
          'street'      => $row['address'],
          'city'        => $row['city'],
          'state'       => $row['state'],
          'postal_code' => $row['postal_code'],
        ]);
    }

    public function sheets(): array
    {
        return [
            // Select by sheet index
            0 => new PoliciesImport(),
        ];
    }

    public function rules(): array
    {
        return [
            'policy_name' => 'required|string',
             '*.policy_name' => 'required|string',
        ];
    }

}

рдиреАрддрд┐ рдирд┐рдпрдВрддреНрд░рдХ.php

public function import(Request $request)
  {
    if ($request->hasFile('file')) {

      // validate incoming request
      $this->validate($request, [
        'file' => 'required|file|mimes:xls,xlsx,csv|max:10240', //max 10Mb
      ]);

          if ($request->file('file')->isValid()) {

              $file = $request->file('file');
              $path = $file->store('uploads/policy');
              $fileHeaders = current((new HeadingRowImport)->toArray($path)[0]);
              $validHeaders = [
                'name','phone','address','state','city','postal_code'
              ];
              sort($fileHeaders);
              sort($validHeaders);

              // Check the File Headers
              if ($fileHeaders == $validHeaders) {
                  // Import the saved excel file
                  (new PoliciesImport)->import($path);
              }

              Storage::delete($path);
          }
      }

      return back();

  }

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ!

рд▓реЗрдХрд┐рди рд╢реАрдЯ 2 , 3 рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд▓ !!

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢реАрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

    public function sheets(): array
    {
        return [
            // Select by sheet index
            0 => new pricelist_items(),
        ];
    }

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреНрдпрд╛ рдЖрдк рдкреВрд░реНрдг рд╕реНрдЯреИрдХрдЯреНрд░реИрдХ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЕрдм рдпрд╣ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдЖрдпрд╛рдд рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

screen shot 2018-11-12 at 8 02 38 am 2

/рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ/рд╕рд╛рдЗрдЯреНрд╕/рдмреНрд▓реЙрдЧ/рд╡рд┐рдХреНрд░реЗрддрд╛/phpoffice/phpspreadsheet/src/Phpрд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ/рд╡рд░реНрдХрд╢реАрдЯ/RowIterator.php

     *
     * <strong i="8">@param</strong> int $startRow The row number at which to start iterating
     *
     * <strong i="9">@throws</strong> PhpSpreadsheetException
     *
     * <strong i="10">@return</strong> RowIterator
     */
    public function resetStart($startRow = 1)
    {
        if ($startRow > $this->subject->getHighestRow()) {
            throw new PhpSpreadsheetException("Start row ({$startRow}) is beyond highest row ({$this->subject->getHighestRow()})");
        }

        $this->startRow = $startRow;
        if ($this->endRow < $this->startRow) {
            $this->endRow = $this->startRow;
        }
        $this->seek($startRow);

        return $this;
    }

    /**
     * (Re)Set the end row.
     *

рдЙрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд░рдирд╛ред рдХреНрдпрд╛ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ!

рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ 1 рдкрдВрдХреНрддрд┐ (рд╢реАрд░реНрд╖рдХ рдкрдВрдХреНрддрд┐) рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, PhpSpreadsheet рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреЛрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ (рдФрд░ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдЖрдЧреЗ рдХреЛрдИ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ)

@patrickbrouwers рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐ 1 рд╕реЗ рдкрд░реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдорд╛рди рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WithChunkReading рдФрд░ WithCustomChunkSize рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рдирдИ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдлрд╝рд╛рдЗрд▓ рдорд╛рдиреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдорд╛рдиреЛрдВ рдХреЛ рдХрд┐рд╕реА рдирдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░рддреА рд╣реИред
рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ CSV рд╣реИ, рд╢рд╛рдпрдж рд╕рд╣реА рд╕реАрдорд╛рдВрдХрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?

рд╣рд╛рдВред рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред рдЕрдЧрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдкреЙрдк рдЕрдк рд╣реЛрддрд╛ рд╣реИ рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдХреБрдЫ рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реВрдВрдЧрд╛ред рд╡реЗ рд╕рднреА рдПрдХреНрд╕рдПрд▓рдПрд╕рдПрдХреНрд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред

рдЬрд╝рд░реВрд░, рдореБрдЭреЗ рдмрддрд╛рдПрдВ!

@patrickbrouwers рд╣рд╛рдБ рдпрд╣ рд╕рдЪ рд╣реИред рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЖрдпрд╛рдд рдореЙрдбрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдореИрдВ App\Imports\PoliciesImport.php рдореЗрдВ RegistersEventListeners рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реА рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реВрдБ? рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдЪреНрдЪрддрдо рдкрдВрдХреНрддрд┐ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕ рдорд╛рди рдХреЛ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдпрд╣рд╛рдВ рд╕реЗ рдХрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реИред

    public static function beforeImport(BeforeImport $event)
    {
        $worksheet = $event->reader->getActiveSheet();
        $highestRow = $worksheet->getHighestRow(); // e.g. 10

        dd($highestRow);
    }

@abbylovesdon рдкрд╣рд▓реЗ рдЖрдпрд╛рдд рдореЗрдВ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЖрдк рдЕрдкрд╡рд╛рдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЪреНрдЪрддрдо рдкрдВрдХреНрддрд┐ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@patrickbrouwers рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ PHP/Laravel/рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рдФрд░ рдореЗрд░реЗ рдЬреВрддреЗ рдореЗрдВ рд╣реИ рддреЛ рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛ рд╣реИ:

рдореЗрд░реЗ рдЖрдпрд╛рдд рд╡рд░реНрдЧ рдореЗрдВ: App\Imports\PoliciesImport.php

<?php

namespace App\Imports;

use App\Policy;
use Auth;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Validators\Failure;
use Maatwebsite\Excel\Validators\ValidationException;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\RegistersEventListeners;
use Maatwebsite\Excel\Events\BeforeImport;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;

class PoliciesImport implements ToModel, WithValidation, WithHeadingRow, WithMultipleSheets, WithEvents
{
    use Importable, RegistersEventListeners;

    public static function beforeImport(BeforeImport $event)
    {
        $worksheet = $event->reader->getActiveSheet();
        $highestRow = $worksheet->getHighestRow(); // e.g. 10

        if ($highestRow < 2) {
            $error = \Illuminate\Validation\ValidationException::withMessages([]);
            $failure = new Failure(1, 'rows', [0 => 'Now enough rows!']);
            $failures = [0 => $failure];
            throw new ValidationException($error, $failures);
        }
    }

    /**
    * <strong i="8">@param</strong> array $row
    *
    * <strong i="9">@return</strong> \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Policy([
          'user_id'     => Auth::user()->id,
          'policy_name' => $row['name'],
          'phone'       => $row['phone'],
          'street'      => $row['address'],
          'city'        => $row['city'],
          'state'       => $row['state'],
          'postal_code' => $row['postal_code'],
        ]);
    }

    public function sheets(): array
    {
        return [
            // Select by sheet index
            0 => new PoliciesImport(),
        ];
    }

    public function rules(): array
    {
        return [
            'name' => 'required|string',
             '*.name' => 'required|string',
        ];
    }

}

рдЕрдм рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

                  try {
                        (new PoliciesImport)->import($path);
                  } catch (\Exception $e) {
                        $failures = $e->failures();
                        dd($failures[0]);
                  }

рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ! :((

рдпрд╣рд╛рдБ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ! :((

рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рд╕рдорд╕реНрдпрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИ!

рд▓реЗрдХрд┐рди рд╢реАрдЯ 2 , 3 рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд▓ !!

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╢реАрдЯ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

    public function sheets(): array
    {
        return [
            // Select by sheet index
            0 => new pricelist_items(),
        ];
    }

рдореЗрд░реЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдПрдХреНрд╕реЗрд▓ рдлрд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рдХрдИ рд╢реАрдЯреНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдХреБрдЫ рдирд┐рд░рд╛рд╢рд╛ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрджреЗрд╣ рд╕рдЪ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдпрд╣ рд╕реНрдкреНрд░реЗрдбрд╢реАрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ 'рдЕрдирд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ' рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред
image

рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдкрдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ 1 рдкрдВрдХреНрддрд┐ (рд╢реАрд░реНрд╖рдХ рдкрдВрдХреНрддрд┐) рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп, PhpSpreadsheet рд╢рд┐рдХрд╛рдпрдд рдХрд░рддреА рд╣реИ рдХрд┐ рдХреЛрдИ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ (рдФрд░ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдЖрдЧреЗ рдХреЛрдИ рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ)

рдЕрдЧрд░ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рд╣реЗрдбрд░ рд░реЛ рд╣реИ рддреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░реЗрдВред рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрдЪрд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ

рд╣реИрд▓реЛ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреБрдЫ рднреА рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 10k рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ Start row (2) is beyond highest row (1) рдорд┐рд▓реА рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ 5k рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

рд╣реИрд▓реЛ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдмрдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреБрдЫ рднреА рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ 10k рдкрдВрдХреНрддрд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ Start row (2) is beyond highest row (1) рдорд┐рд▓реА рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ 5k рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

рд╢рд╛рдпрдж рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдХреЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдХреЛрдб рдФрд░ рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рд╕реНрдкреЗрдХреНрд╕ рдХреЛ рджреЗрдЦреЗ рдмрд┐рдирд╛ рдмрддрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рд╛рдЗрд▓ рддреНрд░реБрдЯрд┐ рд╣реИред

рдмрд╕ рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реБрдЖ рдерд╛ред рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлрд╝рд╛рдЗрд▓ PHP рдХреЗ 'upload_max_filesize' рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рдмрдбрд╝реА рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ 40k рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде 5рдПрдордмреА рдХреЗ рдлрд╛рдЗрд▓рд╕рд╛рдЗрдЬ рдХреЗ рд▓рд┐рдП 500 рдХреА рдЪрдВрдХрд┐рдВрдЧ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрдПрдордЖрдИ рдкрд░ рдореЗрд░рд╛ рдЕрдзрд┐рдХрддрдо 'upload_max_filesize' 2 рдПрдордмреА рдерд╛ред рдХреНрдпрд╛ рдореИрдВ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЕрдзрд┐рдХрддрдо рдЕрдкрд▓реЛрдб рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдБ, рдФрд░ Start row (2) is beyond highest row (1) рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдЬрдм рдореИрдВрдиреЗ 'upload_max_filesize' рдХреА рд╕реАрдорд╛ рдмрдврд╝рд╛рдИ рддреЛ рддреНрд░реБрдЯрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рд╕рдлрд▓ рд░рд╣реАред

рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ phpspreadsheet рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдХреНрдпреЛрдВ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд╣рдореЗрд╢рд╛ рд╡рд╣рд╛рдВ рдкрд░ рдкреАрдЖрд░ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@GlennM рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдЕрдЧрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реБрдИ рддреЛ рдореИрдВ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд░ рдЧреМрд░ рдХрд░реВрдВрдЧрд╛ред

@patrickbrouwers рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐ 1 рд╕реЗ рдкрд░реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдФрд░ рдорд╛рди рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WithChunkReading рдФрд░ WithCustomChunkSize рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рдирдИ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдИ рдФрд░ рдкреБрд░рд╛рдиреЗ рдлрд╝рд╛рдЗрд▓ рдорд╛рдиреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЕрднреА рднреА рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ

рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рд╣рдЯрд╛рдПрдВ рдЦрд╛рд▓реА рд╣реИрдВ

рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рд╣рдЯрд╛рдПрдВ рдЦрд╛рд▓реА рд╣реИрдВ

рдпрд╣ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рдерд╛, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрдкрддреНрд░рдХ рд╣реИрдВ рдФрд░ рдЖрдк "рд╡рд┐рджрд╣реЗрдбрд┐рдВрдЧрд░реЛ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

bahmanyaghoobi picture bahmanyaghoobi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

daraghoshea picture daraghoshea  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gamevnlc picture gamevnlc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alejandri picture alejandri  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pamekar picture pamekar  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ