Làm cách nào để đọc tệp excel trong laravel 7?

Làm cách nào để đọc tệp excel trong laravel 7?

Nhập tệp CSV vào Laravel 8

Hôm nay tôi sẽ giải thích cho bạn về cách bạn có thể nhập tệp Excel / CSV vào Laravel

Tôi sẽ sử dụng Tech-Admin Panel cho việc này

Để nhập tệp excel, tôi đang sử dụng Laravel Excel

Bước 1 - Cài đặt

Để cài đặt Gói Laravel Excel thông qua lệnh chạy trình soạn thảo bên dưới

composer require maatwebsite/excel

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Tiếp theo để xuất tệp cấu hình, bạn cần chạy lệnh bên dưới

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bước 2 - Tạo một Lớp nhập bên trong app/Imports

Tạo lớp nhập bằng cách sử dụng lệnh artisan

php artisan make:import UsersImport --model=User

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bước 3 - Cập nhật lớp UsersImport

Để sử dụng Tệp CSV/Excel có tiêu đề, chúng tôi phải triển khai WithHeadingRow, Lớp UsersImport sẽ giống như



namespace App\Imports;

use App\Models\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class UsersImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new User([
            "first_name" => $row['first_name'],
            "last_name" => $row['last_name'],
            "email" => $row['email'],
            "mobile_number" => $row['mobile_number'],
            "role_id" => 2, // User Type User
            "status" => 1,
            "password" => Hash::make('password')
        ]);
    }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Bước 4 - Xử lý tệp Excel/CSV đã tải lên

public function uploadUsers(Request $request)
{
        Excel::import(new UsersImport, $request->file);

        return redirect()->route('users.index')->with('success', 'User Imported Successfully');
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Các bạn có thể xem video giải thích để rõ hơn

Trong phần tiếp theo tôi sẽ giải thích về Xuất người dùng

Cảm ơn bạn đã đọc

Liên lạc với tôi
Twitter
Instagram
YouTube

Trong bài đăng này, tôi trình bày cách nhập và xuất dữ liệu tệp Excel số lượng lớn vào và từ ứng dụng Laravel bằng thư viện PhpSpreadsheet. PhpSpreadsheet là một thư viện PHP cung cấp hỗ trợ đọc và viết các loại định dạng tệp khác nhau như Excel, CSV, HTML, SpreadsheetML và LibreOffice Calc, trong số những định dạng khác.  

Trong phát triển web hiện đại, các nhà phát triển có xu hướng xây dựng dựa trên các hệ thống dựa trên dữ liệu bất cứ khi nào có nhu cầu nhập hoặc xuất dữ liệu, trong khi phân tích hoặc báo cáo về nó. Khi làm như vậy, hầu hết các ứng dụng sử dụng tệp CSV hoặc Excel cùng với cơ sở dữ liệu khi xử lý dữ liệu hàng loạt, vì điều này rõ ràng hiệu quả hơn so với nhập dữ liệu, từng mục một.  

điều kiện tiên quyết

Để tiếp tục với hướng dẫn này, bạn cần có một dự án Laravel hiện có hoặc cài đặt một thiết lập dự án mới. Nếu bạn chưa quen với Laravel, hãy làm theo các hướng dẫn này để cài đặt thiết lập dự án mới.

Bước 1 – Tạo bảng

Sau khi cài đặt thành công dự án Laravel, hãy tạo cơ sở dữ liệu và bảng. Chạy tập lệnh SQL sau trong môi trường cơ sở dữ liệu của bạn để tạo bảng ‘tbl_customer’ mà bạn có thể sử dụng để lưu trữ dữ liệu của mình.

--

-- Database: `mydata`

--




-- --------------------------------------------------------




--

-- Table structure for table `tbl_customer`

--




CREATE TABLE `tbl_customer` (

  `CustomerID` int(11) NOT NULL,

  `CustomerName` varchar(250) NOT NULL,

  `Gender` varchar(30) NOT NULL,

  `Address` text NOT NULL,

  `City` varchar(250) NOT NULL,

  `PostalCode` varchar(30) NOT NULL,

  `Country` varchar(100) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;




--

-- Indexes for table `tbl_customer`

--

ALTER TABLE `tbl_customer`

  ADD PRIMARY KEY (`CustomerID`);




--

-- AUTO_INCREMENT for dumped tables

--




--

-- AUTO_INCREMENT for table `tbl_customer`

--

ALTER TABLE `tbl_customer`

  MODIFY `CustomerID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=155;

COMMIT;

 

Bước 2 – Tạo kết nối cơ sở dữ liệu Mysql trong Laravel

Để tạo kết nối cơ sở dữ liệu, hãy mở . ENV và xác định cấu hình cơ sở dữ liệu của bạn.

DB_CONNECTION=mysql

DB_HOST=localhost

DB_PORT=3306

DB_DATABASE=mydata

DB_USERNAME=root

DB_PASSWORD=

 

Bước 3. Cài đặt PhpSpreadsheet trong Laravel

Trong thư mục dự án của bạn, hãy chạy lệnh này trên thiết bị đầu cuối của bạn để cài đặt thư viện PhpSpreadsheet

composer require phpoffice/phpspreadsheet

Bước 4. Tạo tệp xem của bạn (chào mừng. lưỡi. php)

Bên trong thư mục resources/views , hãy tạo lời chào mừng. lưỡi. php chứa biểu mẫu để tải lên tệp excel, bảng để tải dữ liệu đã tải lên từ cơ sở dữ liệu, cũng như nút để xuất dữ liệu. Dán đoạn mã sau vào đây.

________số 8_______

 

Bước 5. Tạo một bộ điều khiển (ExcelController. php)

Trong thư mục app/Http/Controllers , hãy tạo tệp bộ điều khiển ( ExcelController. php) nơi bạn có thể viết các hàm để tải tệp phiến và dữ liệu từ cơ sở dữ liệu, đồng thời nhập và xuất dữ liệu đã tải lên.

 

Để sử dụng thư viện Phpspreadsheet, bạn phải nhập các không gian tên bí danh của nó trong Bộ điều khiển. Trong trường hợp này, hãy nhập các lớp sau

use Illuminate\Http\Request;

use Illuminate\Support\Facades\DB;

use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Reader\Exception;

use PhpOffice\PhpSpreadsheet\Writer\Xls;

use PhpOffice\PhpSpreadsheet\IOFactory;

Bạn cũng sẽ cần sử dụng các phương thức/chức năng sau bên trong bộ điều khiển.  

index() – Đây là phương thức gốc của lớp trình điều khiển này. Bên trong hàm, hãy tạo truy vấn để tìm nạp dữ liệu từ tbl_customer , sẽ được tải trong welcome. lưỡi. php tệp, ở định dạng bảng. Nếu bảng cơ sở dữ liệu trống, bảng trên giao diện sẽ trống.

importData() – Phương thức này có một biến yêu cầu chứa dữ liệu tệp excel đã tải lên. Bên trong hàm, xác thực định dạng tệp và kiểm tra xem nó có chứa dữ liệu bạn cần hay không, sau đó bạn có thể đọc dữ liệu chứa bằng gói PhpSpreadsheet. Thư viện PhpSpreadsheet sử dụng lớp IOFactory để tải dữ liệu excel và trích xuất từng hàng một thành một mảng PHP. Sử dụng  mảng để chèn dữ liệu đã trích xuất vào bảng tbl_customer . Sau khi nhập dữ liệu thành công, chuyển hướng trở lại trang chính, trả về thông báo thành công.

exportData()- Phương thức này truy vấn bảng tbl_customer để tải dữ liệu khách hàng và sử dụng . Nó sẽ tải xuống tệp excel chứa dữ liệu trên PC cục bộ.

orderBy('CustomerID', 'DESC')->paginate(5);

       return view('welcome', compact('data'));

   }




   /**

    * @param Request $request

    * @return \Illuminate\Http\RedirectResponse

    * @throws \Illuminate\Validation\ValidationException

    * @throws \PhpOffice\PhpSpreadsheet\Exception

    */

   function importData(Request $request){




       $this->validate($request, [

           'uploaded_file' => 'required|file|mimes:xls,xlsx'

       ]);




       $the_file = $request->file('uploaded_file');

       try{

           $spreadsheet = IOFactory::load($the_file->getRealPath());

           $sheet        = $spreadsheet->getActiveSheet();

           $row_limit    = $sheet->getHighestDataRow();

           $column_limit = $sheet->getHighestDataColumn();

           $row_range    = range( 2, $row_limit );

           $column_range = range( 'F', $column_limit );

           $startcount = 2;




           $data = array();




           foreach ( $row_range as $row ) {

               $data[] = [

                   'CustomerName' =>$sheet->getCell( 'A' . $row )->getValue(),

                   'Gender' => $sheet->getCell( 'B' . $row )->getValue(),

                   'Address' => $sheet->getCell( 'C' . $row )->getValue(),

                   'City' => $sheet->getCell( 'D' . $row )->getValue(),

                   'PostalCode' => $sheet->getCell( 'E' . $row )->getValue(),

                   'Country' =>$sheet->getCell( 'F' . $row )->getValue(),




               ];

               $startcount++;

           }




           DB::table('tbl_customer')->insert($data);

       } catch (Exception $e) {

           $error_code = $e->errorInfo[1];




           return back()->withErrors('There was a problem uploading the data!');

       }

       return back()->withSuccess('Great! Data has been successfully uploaded.');




   }




   /**

    * @param $customer_data

    */

   public function ExportExcel($customer_data){

       ini_set('max_execution_time', 0);

       ini_set('memory_limit', '4000M');




       try {

           $spreadSheet = new Spreadsheet();

           $spreadSheet->getActiveSheet()->getDefaultColumnDimension()->setWidth(20);

           $spreadSheet->getActiveSheet()->fromArray($customer_data);




           $Excel_writer = new Xls($spreadSheet);

           header('Content-Type: application/vnd.ms-excel');

           header('Content-Disposition: attachment;filename="Customer_ExportedData.xls"');

           header('Cache-Control: max-age=0');

           ob_end_clean();

           $Excel_writer->save('php://output');

           exit();

       } catch (Exception $e) {

           return;

       }




   }




   /**

    *This function loads the customer data from the database then converts it

    * into an Array that will be exported to Excel

    */

   function exportData(){

       $data = DB::table('tbl_customer')->orderBy('CustomerID', 'DESC')->get();




       $data_array [] = array("CustomerName","Gender","Address","City","PostalCode","Country");

       foreach($data as $data_item)

       {

           $data_array[] = array(

               'CustomerName' =>$data_item->CustomerName,

               'Gender' => $data_item->Gender,

               'Address' => $data_item->Address,

               'City' => $data_item->City,

               'PostalCode' => $data_item->PostalCode,

               'Country' =>$data_item->Country

           );




       }

       $this->ExportExcel($data_array);




   }

}


 

Bước 6. Đặt các tuyến đường

Sau đó, mở đến các tuyến đường/web. php để thiết lập các liên kết đến các chức năng của bộ điều khiển như sau

Route::get('/', '[email protected]');

Route::post('/import', '[email protected]');

Route::get('/export', '[email protected]');

 

Bước 7. Chạy ứng dụng

Bây giờ, hãy đến dấu nhắc lệnh và viết lệnh sau.  

php artisan serve

 

Nếu bạn muốn chạy dự án trên một cổng khác, hãy sử dụng lệnh bên dưới. Chỉ định số cổng ưa thích của bạn

php artisan serve --port=8080

 

Lệnh này sẽ trả về url cơ sở của ứng dụng Laravel mà bạn sẽ viết trên trình duyệt của mình và tương tác với nó. Xử lý dữ liệu Excel bằng PHPSpreadsheet trong Laravel

Làm cách nào để đọc tệp excel trong laravel 7?

Phần kết luận

Bài đăng này cung cấp hướng dẫn từng bước về xuất và nhập dữ liệu tệp excel trong dự án Laravel. Logic tương tự có thể được sử dụng để điều chỉnh chức năng theo nhu cầu cụ thể của dự án. Nhận mã đầy đủ

Làm cách nào để đọc dữ liệu từ tệp Excel trong laravel?

Có 9 bước đơn giản để làm theo. .
Cài đặt dự án laravel mới
Cấu hình chi tiết cơ sở dữ liệu và mô hình
Cài đặt gói maatwebsite/excel
Tạo tuyến đường
Tạo lớp nhập để nhập dữ liệu
Tạo một lớp xuất để xuất dữ liệu
Tạo bộ điều khiển
Tạo các tập tin lưỡi / xem

Làm cách nào để xuất dữ liệu trong tệp Excel trong laravel?

Cài đặt gói. Yêu cầu -.
Cập nhật ứng dụng. php. .
xuất bản gói. Chạy lệnh – nhà cung cấp thủ công php. xuất bản --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config. .
Cấu hình cơ sở dữ liệu. Mở ra. .
Tạo bảng. Tạo một bảng mới Nhân viên sử dụng di chuyển và thêm một số bản ghi. .
Mô hình. .
Tạo lớp Xuất. .
Tuyến đường

Làm cách nào để đọc tệp excel trong laravel 9?

Bước 1 – Tải xuống ứng dụng Laravel 9. .
Bước 2 – Cấu hình cơ sở dữ liệu. .
Bước 3 – Cài đặt gói maatwebsite/excel. .
Bước 4 – Cấu hình maatwebsite/excel. .
Bước 5 – Tạo các tuyến đường. .
Bước 6 – Soạn lớp Xuất nhập khẩu. .
Bước 7 – Tạo bộ điều khiển ExcelCSV bằng Artisan Command. .
Bước 8 – Tạo tập tin Blade

Làm cách nào để sử dụng excel nhanh trong laravel?

Cài đặt fast-excel bằng trình soạn nhạc yêu cầu rap2hpoutre/fast-excel
Tạo một dataTable lớp php artisan datatables. tạo người dùng
Điều chỉnh UsersDataTable khi cần
Đặt thuộc tính $fastExcel = true