Cách tạo tệp Word từ CSDL bằng thư viện PHPWord

Để viết mã PHP xuất cơ sở dữ liệu trắc nghiệm sang tệp Word, chúng ta có thể sử dụng thư viện PHPWord.

Sau đây VniTeach sẽ hướng dẫn cách tạo tệp Word từ CSDL bằng thư viện PHPWord một cách nhanh chóng như sau:

1. Cài đặt PHPWord bằng Composer

Để bắt đầu sử dụng Composer bạn cần tải Composer từ trang web chính thức https://getcomposer.org/ và tiến hành cài đặt vào máy tính của mình (tất nhiên máy tính này đã cài đặt PHP và máy chủ ảo wamp hoặc xampp), khi cài đặt Composer bạn cần chọn đúng đường dẫn chứa tập tin php.exe trong thư mục cài đặt của PHP, ví dụ: C:\wamp64\bin\php\php7.4.9.

2. Cài đặt và sử dụng PHPWord qua Composer

Tạo một dự án PHP mới ở trong thư mục gốc của wampp (ví dụ dự án của bạn lưu trong thư mục mytools ở C:\wamp64\www\mytools), sau đó tại thư mục mytools bạn gõ cmd ở đường dẫn của thư mục để mở CMD rồi chạy lệnh composer require phpoffice/phpword để cài đặt phpoffice/phpword.

phpoffice

Lưu ý:

  • Composer sẽ tải và cài đặt PHPWord cũng như tất cả các gói phụ thuộc của nó vào thư mục vendor trong dự án của bạn.
  • Sau khi cài đặt, bạn có thể sử dụng các lớp và phương thức được cung cấp bởi PHPWord trong mã PHP của mình.

3. Sử dụng PHPWord trong tệp PHP để tạo tệp Word

<?php
require 'vendor/autoload.php'; // Đường dẫn đến file autoload.php của PHPWord

// Kết nối CSDL
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "ten_csdl";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Lấy dữ liệu từ cơ sở dữ liệu
$sql = "SELECT * FROM questions"; // Giả sử 'questions' là bảng chứa câu hỏi trắc nghiệm
$result = $conn->query($sql);

// Tạo một đối tượng PHPWord
$phpWord = new \PhpOffice\PhpWord\PhpWord();

// Tạo một section mới
$section = $phpWord->addSection();

// Thêm tiêu đề
$section->addTitle('Danh sách câu hỏi trắc nghiệm', 1);

// Thêm câu hỏi từ CSDL vào tệp Word
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $section->addText($row['question'], array('bold' => true));
        $section->addText('A. ' . $row['option_a']);
        $section->addText('B. ' . $row['option_b']);
        $section->addText('C. ' . $row['option_c']);
        $section->addText('D. ' . $row['option_d']);
        $section->addText('----------------------------------------------');
    }
} else {
    echo "0 results";
}

// Lưu tệp Word
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save('danh_sach_cau_hoi_trac_nghiem.docx');

$conn->close();
?>

Trong ví dụ này, chúng ta đã sử dụng PHPWord để tạo tệp Word và sau đó thêm dữ liệu từ cơ sở dữ liệu vào tệp Word bằng cách duyệt qua kết quả truy vấn và thêm từng câu hỏi vào tệp. Cuối cùng, chúng ta lưu tệp Word với tên “danh_sach_cau_hoi_trac_nghiem.docx”. Hãy đảm bảo rằng bạn đã thay đổi các chi tiết kết nối CSDL (servername, username, password, dbname) để phản ánh cài đặt cơ sở dữ liệu của bạn.

Để thao tác thành thạo với PHPWord thì bạn nên đọc kỹ tài liệu chính thống tại địa chỉ https://phpword.readthedocs.io/en/latest/

Chúc bạn thành công!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *