PHP TUTORIALS
Hướng dẫn tạo domain ảo tại localhost với XAMPP trên Window Có gì mới trong PHP 8 (Tính năng, Cải tiến và Trình biên dịch JIT) Hướng dẫn viết ứng dụng kiểm tra năm sinh theo âm lịch bằng PHP Xử lý realtime trong PHP sử dụng pusher Hướng dẫn gửi mail trong PHP với PHPMailer Bóc tách dữ liệu từ trang khác bằng PHP Simple HTML DOM Parser Cách sửa lỗi hình ảnh khi đăng bài viết lên Facebook Hướng dẫn tạo thông báo realtime với pushcrew Kích thước chuẩn và cách làm FavIcon icon Tìm hiểu bản chất vòng lặp foreach trong php Những vấn đề nâng cao kỹ năng lập trình trong php Sử Dụng Vòng Lặp Xuất Dữ Liệu Bảng Tính Lương Tìm hiểu thuật toán phân trang trong php Giới hạn số trang trong thuật toán phân trang Bài 01: Đệ quy menu đa cấp với php và mysql - phần 1 Bài 02: Đệ quy menu đa cấp với php và mysql - phần 2 Tích hợp bộ search google vào website Nên dùng count() hay sizeof() để đếm số phần tử của mảng Bài 01: Lấy dữ liệu từ mysql lưu vào file excel với PHPExcel Tạo slug tự động bằng JavaScript và PHP RSS là gì? Cách Tạo RSS cho Website PHP CMS là gì? Các CMS phổ biến hiện nay (update 2021) Web động là gì? Web tĩnh là gì? Chặn referrer từ website simple-share-buttons.com Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân Hướng dẫn tạo Facebook App để lấy App ID và Secret Key Mối liên hệ giữa HTML - PHP - MYSQL Tự động post bài viết lên tường với hootsuite.com Kiểm tra người dùng đã đăng nhập hay chưa bằng PHP Lấy video kênh Youtube mới nhất bằng jQuery và Youtube API V3 Đệ quy chuyên mục đa cấp trong PHP toàn tập Font Awesome là gì? Cách sử dụng Font Awesome Tích hợp đăng nhập Google vào Website Thuật toán phân trang với PHP và MySQL Cài đặt LAMP trên Fedora
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 01: Lấy dữ liệu từ mysql lưu vào file excel với PHPExcel

Đôi lúc làm việc với những dự án mà khách hàng thường lưu trữ dữ liệu trong file excel vì sự tiện lợi của nó, điều này đôi khi gây khó khăn cho coder vì việc đọc file excel không phải là đơn giản, nếu đọc được thì lại bị lỗi font chữ khi chuyển đổi dữ liệu sang file excel. Tuy nhiên hiện tại thì vấn đề đó không còn phức tạp nữa nếu ta sử dụng PHPExcel API để giải quyết. 

Đây là bài đầu tiên trong loạt bài hướng dẩn sử dụng PHPExcel nên tôi sẽ giới thiệu sơ lược và cuối cùng sẽ làm một ví dụ nhỏ đó là lưu dữ liệu từ mysql vào file excel để người dùng download về. Tuy nhiên để cho tiện lợi thì thay vì lấy dữ liệu từ CSDL thì tôi sẽ tạo một mảng để demo nên rất mong các bạn thông cảm.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Điều kiện sử dụng PHPExcel

Để sử dụng được bộ thư viện viết bằng php này thì đòi hỏi cấu hình Server bạn phải như sau:

  • PHP version 5.2.0 hoặc mới hơn
  • PHP extension php_zip enabled [^phpzip_footnote]
  • PHP extension php_xml enabled
  • PHP extension php_gd2 enabled (if not compiled in)

2. Cấu hình sử dụng PHPExcel

Trước khi sử dụng nó bạn phải download bộ thư viện từ trang chủ PHPExcel. Trong bộ thư viện này có rất nhiều file, nhưng file chủ yếu đóng vai trò khởi động toàn bộ thư viện đó là file PHPExcel.php, nên để sử dụng được thì bạn chỉ cần require file PHPExcel.php.

Cách đơn giản nhất để học bộ thư viện này là bạn đọc phần ví dụ của nó, thực tế bạn có thể đọc mà không cần xem tuts của tôi, nhưng nếu tiếng anh bạn không rành và khả năng debug của bạn không tốt thì có thể tham khảo serie này để dễ dàng nắm bắt hơn.

3. Lấy dữ liệu từ mysql lưu vào file excel với PHPExcel

Note: Như phần đầu tôi có trình bày, vì tôi không muốn rườm rà nên tôi sẽ sử dụng mảng coi như là dữ liệu từ mysql.

Tổng cộng chúng ta có 9 bước để thực hiện, vì sự rườm rà của code nên tôi sẽ comment trong file demo luôn nên các bạn vui lòng đọc phần comment nhé. Bây giờ bạn tạo file download.php và copy nội dung này vào:

<?php

// Bước 1: 
// Lấy dữ liệu từ database
$data = array(
    array(
        'TheHalfheart@gmail.com', 'Nguyễn Văn Cường'
    ),
    array(
        'freetuts.net@gmail.com', 'Nguyễn Văn Cường'
    ),
    array(
        'mrcuong.winter@gmail.com', 'Nguyễn Văn Cường'
    ),
    array(
        'ok_drt@yahoo.com', 'Nguyễn Văn Cường'
    )
);

// Bước 2: Import thư viện phpexcel
require '../PHPExcel.php';

// Bước 3: Khởi tạo đối tượng mới và xử lý
$PHPExcel = new PHPExcel();

// Bước 4: Chọn sheet - sheet bắt đầu từ 0
$PHPExcel->setActiveSheetIndex(0);

// Bước 5: Tạo tiêu đề cho sheet hiện tại
$PHPExcel->getActiveSheet()->setTitle('Email List');

// Bước 6: Tạo tiêu đề cho từng cell excel, 
// Các cell của từng row bắt đầu từ A1 B1 C1 ...
$PHPExcel->getActiveSheet()->setCellValue('A1', 'STT');
$PHPExcel->getActiveSheet()->setCellValue('B1', 'Email');
$PHPExcel->getActiveSheet()->setCellValue('C1', 'Fullname');

// Bước 7: Lặp data và gán vào file
// Vì row đầu tiên là tiêu đề rồi nên những row tiếp theo bắt đầu từ 2
$rowNumber = 2;
foreach ($data as $index => $item) 
{
    // A1, A2, A3, ...
    $PHPExcel->getActiveSheet()->setCellValue('A' . $rowNumber, ($index + 1));
    
    // B1, B2, B3, ...
    $PHPExcel->getActiveSheet()->setCellValue('B' . $rowNumber, $item[0]);

    // C1, C2, C3, ...
    $PHPExcel->getActiveSheet()->setCellValue('C' . $rowNumber, $item[1]);
    
    // Tăng row lên để khỏi bị lưu đè
    $rowNumber++;
}

// Bước 8: Khởi tạo đối tượng Writer
$objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');

// Bước 9: Trả file về cho client download
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="bai-01-demo-excel-freetuts.net.xls"');
header('Cache-Control: max-age=0');
if (isset($objWriter)) {
    $objWriter->save('php://output');
}

Chạy file này lên thì bạn sẽ nhận một file excel với dữ liệu trong mysql như ở bước 1. 

4. Lời kết

Bài này có hạn chế là vì tôi lười lấy dữ liệu từ mysql để gắn vào file excel nên tôi sử dụng mảng để thay thế, tuy nhiên tôi nghĩ nếu bạn đang đọc bài này thì điều này đơn giản đối với bạn.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top