Nhập tệp excel PHP

Chào mừng bạn đến với hướng dẫn về cách nhập Bảng tính Excel vào cơ sở dữ liệu MySQL bằng PHP. Vì vậy, bạn có một dự án yêu cầu đọc một số dữ liệu từ bảng tính và lưu chúng vào cơ sở dữ liệu?

Để nhập tệp Excel vào cơ sở dữ liệu

  1. Chúng tôi phải sử dụng thư viện của bên thứ ba có thể đọc tệp Excel. PHPSpreadsheet là một đề xuất tốt và chúng tôi có thể lấy nó dễ dàng bằng Trình soạn thảo – composer require phpoffice/phpspreadsheet
  2. Tạo bảng cơ sở dữ liệu và tệp Excel để nhập
  3. Sử dụng PHPSpreadsheet để đọc bảng tính Excel, trích xuất dữ liệu và chèn chúng vào cơ sở dữ liệu

Làm thế nào chính xác điều này được thực hiện?

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn ví dụ khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

TLDR – TRANG TRÌNH BÀY NHANH

Nhập tệp excel PHP
Tải xuống & Ghi chú

Nhập tệp excel PHP
PHP MYSQL Nhập Excel

Nhập tệp excel PHP
Bit bổ sung & liên kết

Nhập tệp excel PHP
Video hướng dẫn

Nhập tệp excel PHP
Kết thúc

 

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã nguồn như đã hứa

 

GHI CHÚ NHANH

  • Một bản sao của PHPSpreadsheet không được bao gồm trong tệp zip. Vui lòng tải xuống phiên bản mới nhất của chính bạn
  • Tạo cơ sở dữ liệu thử nghiệm và nhập 2a-dummy.sql
  • Thay đổi cài đặt cơ sở dữ liệu trong 3-import.php thành cài đặt của riêng bạn, sau đó khởi chạy nó trong trình duyệt
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn hoặc sử dụng nó trong dự án của riêng bạn

 

NHẬP EXCEL VÀO MYSQL

Được rồi, bây giờ chúng ta hãy lấy một ví dụ về nhập tệp Excel vào cơ sở dữ liệu

 

BƯỚC 1) CÀI ĐẶT PHPSPREADSHEET

Không có chức năng riêng trong PHP để đọc tệp Excel. Vì vậy, chúng tôi cần tải xuống và sử dụng thư viện của bên thứ ba có tên là PHPSpreadsheet – Đây là cách tải xuống

  • Cách dễ nhất là sử dụng trình quản lý ứng dụng có tên là Trình soạn thảo - Một cái gì đó giống như Git, khá hữu ích để lấy thư viện tự động. Một rắc rối nhỏ để tải xuống và cài đặt, nhưng dù sao cũng chỉ là nỗ lực một lần
  • Sau khi cài đặt Trình soạn thảo, hãy mở dấu nhắc lệnh và điều hướng đến thư mục dự án của bạn – cd HTTP/FOLDER/
  • Chạy composer require phpoffice/phpspreadsheet

Đó là tất cả. Trình soạn thảo sẽ tự động kéo phiên bản mới nhất vào thư mục vendor/

 

 

BƯỚC 2) BẢNG CƠ SỞ DỮ LIỆU GIẢ & TẬP TIN EXCEL

2A) BẢNG NGƯỜI DÙNG GIẢ

2a-hình nộm. sql

CREATE TABLE `users` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `email` (`email`);

ALTER TABLE `users`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;

Trong ví dụ này, chúng tôi sẽ sử dụng bảng người dùng rất đơn giản chỉ có 3 trường

FieldDescriptionidKhóa chính, tự động tăng. name Tên người dùng. emailĐịa chỉ email của người dùng

 

2B) TẬP TIN EXCEL GIẢ

2b-hình nộm. xlsx

TênEmailJohn Doejohn@doe. com Jane Doe Jane@doe. comJosh Doejosh@doe. comJoy Doejoy@doe. comJanus Doejanus@doe. comJay Doejay@doe. comJune Doe Jane@doe. comJulius Doejulius@doe. comJess Doejess@doe. comJack Doejack@doe. com

Tiếp theo, chúng tôi có một số người dùng giả trong tệp Excel cần được nhập vào bảng trên

 

 

BƯỚC 3) PHIẾU NHẬP PHP

3-nhập khẩu. php

 PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
 
// (B) PHPSPREADSHEET TO LOAD EXCEL FILE
require "vendor/autoload.php";
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load("2b-dummy.xlsx");
$worksheet = $spreadsheet->getActiveSheet();

// (C) READ DATA + IMPORT
$sql = "INSERT INTO `users` (`name`, `email`) VALUES (?,?)";
foreach ($worksheet->getRowIterator() as $row) {
  // (C1) FETCH DATA FROM WORKSHEET
  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false);
  $data = [];
  foreach ($cellIterator as $cell) { $data[] = $cell->getValue(); }

  // (C2) INSERT INTO DATABASE
  print_r($data);
  try {
    $stmt = $pdo->prepare($sql);
    $stmt->execute($data);
    echo "OK - USER ID - {$pdo->lastInsertId()}
"; } catch (Exception $ex) { echo $ex->getMessage() . "
"; } $stmt = null; } // (D) CLOSE DATABASE CONNECTION if ($stmt !== null) { $stmt = null; } if ($pdo !== null) { $pdo = null; }

Đúng, cái này thoạt nhìn hơi đáng sợ nhưng thực ra rất đơn giản

  1. Kết nối với cơ sở dữ liệu. Hãy nhớ thay đổi cài đặt thành của riêng bạn
  2. Tải thư viện PHPSpreadsheet và sử dụng nó để mở bảng tính Excel giả
  3. Đọc các ô của bảng tính và nhập chúng vào cơ sở dữ liệu
  4. Kết thúc. Đóng kết nối cơ sở dữ liệu

 

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả cho hướng dẫn này, và đây là một phần nhỏ về một số tính năng bổ sung có thể hữu ích cho bạn

 

BẢNG TÍNH VỚI CÔNG THỨC

Hãy lưu ý rằng PHPSpreadSheet sẽ không đánh giá công thức ô. Thực hiện "chuyển đổi công thức thành giá trị" của riêng bạn trong Excel và lưu nó dưới dạng một bảng tính khác trước khi nhập

 

Ô NGÀY & GIỜ

Đây là một vấn đề khác… Về cơ bản, trước tiên hãy chuyển đổi ô ngày/giờ thành chuỗi hoặc văn bản

 

LIÊN KẾT & Tham khảo

  • Cần làm ngược lại với xuất ra file Excel?
  • Kiểm tra Trang GitHub của PHPSpreadsheet tại đây
  • Ngoài ra, các tài liệu chính thức

 

HƯỚNG DẪN YOUTUBE

 

BẢNG CHEAT INFOGRAPHIC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn với dự án của bạn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, xin vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc