Tạo Report MS word theo mẫu cố định thật đơn giản với PHP

word php agitech

Chào các bạn, trong quá trình thực hiện dự án phần mềm được viết trên nền web tôi đã tìm ra cách tạo những Report có mẫu cố định thật đơn giản và dễ thực hiện. Hôm nay, tôi sẽ chia sẻ cho các bạn cách tạo Report trên. Cách làm sau chỉ sử dụng cho ngôn ngữ web PHP thôi các bạn nhé!

Bước 1: Các bạn cần tạo một mẫu file word với bố cục và nội dung theo ý muốn của các bạn.

Ví dụ: Tôi tạo một file word với 3 đối số cần đưa vào như sau (xem hình mẫu bên dưới): {Title}, {Content1}, {Content2}

report php mau word

Bước 2: Các bạn cho file word vào trong một thư mục test trong thư mục localhost để tiến hành chạy demo thử.

Ví dụ: Tôi tạo ra file word là "testfile.docx"

Bước 3: Các bạn tạo một file "test.php" và chép đoạn code php bên dưới vào file php đã tạo. Và vào trình duyệt web link http://localhost/test/test.php

<?php
$zip = new ZipArchive();

$Title = 'TẠO REPORT MS WORD THEO MẪU CỐ ĐỊNH THẬT ĐƠN GIẢN VỚI PHP';
$Content1 = 'Tôi đã tạo được report word!';
$Content2 = 'Report tôi tạo rất đẹp!';

$filename_goc = 'testfile.docx';
$filename = 'testfile'.time().'.docx';
// Copy một bản sao từ file gốc
copy($filename_goc, $filename);

// Mở file đã copy
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
    echo "Cannot open $filename :( "; die;
}
// Lấy nội dung text trong file
$xml = $zip->getFromName('word/document.xml');

// Dùng hàm str_replace để thay đổi text trong file
$xml = str_replace('{Title}', $Title, $xml);
$xml = str_replace('{Content1}', $Content1, $xml);
$xml = str_replace('{Content2}', $Content2, $xml);

// Ghi lại nội dung đã được đổi vào file
if ($zip->addFromString('word/document.xml', $xml)) { echo 'File written!'; }
else { echo 'File not written.  Go back and add write permissions to this folder!'; }

//Đóng file
$zip->close();

header('Location: '.$filename);

Kết quả: Các bạn mở file word đã được tải về sẽ có nội dung như hình bên dưới.

ket qua report word

Mong rằng qua bài chia sẻ này các bạn có thể tạo ra các report theo ý muốn của mình. Chúc các bạn thành công!

Chia sẻ: Ngụy Kim Hưng