Sử dụng PhpWord để tạo file word từ mẫu cho trước

Tram Ho

Để tạo một tài liệu Word thì hiện tại không có nhiều thư viện PHP để làm tốt công việc này. Trong bài viết này sẽ giới thiệu về thư viện PhpWord để xuất ra các định dạng Word. PHPWord ta có thể dễ dàng tạo ra một file văn bản mới với các thành phần và định dạng như mong muốn, hoặc ta cũng có thể tạo ra một file văn bản từ một template đã có sẵn. PHPWord cung cấp các phương thức để người dùng dễ dàng tạo một file văn bản với các thành phần cơ bản như text, paragraph, header, footer, table

1. Các tính năng

  • Đặt tiêu đề, chủ đề và người tạo
  • Tùy biến kích thước và đánh số trang
  • Tạo header và footer cho mỗi trang văn bản
  • Đặt loại phông chữ mặc định, kích thước phông chữ
  • Sử dụng phông UTF-8 và East Asia
  • Tùy chỉnh kiểu phông chữ như in đậm, in nghiêng, khoảng cách …
  • Chèn các đoạn văn bản đơn giản hoặc phức tạp
  • Chèn tiêu đề, mục lục
  • Ngắt văn bản hoặc ngắt trang

2. Cài đặt

Sử dụng composer

Sau khi cài đặt xong thì ta có thể sử dụng bằng ví dụ tạo file word sau

Tạo file từ một mẫu cho trước

Với PhpWord ta có thể tạo một file từ một mẫu cho trước bằng cách đặt các ${key_search} ở các vị trí trong văn bản mẫu, các vị trí này sẽ được thay thế bằng bất cứ giá trị nào mà ta muốn điền.

Để tải một file word mẫu ta dùng

setValue

Trong file template ta tạo các ${firstname} và ${lastname} vào các vị trí cần điền các nội dung tương ứng

Hello ${firstname} ${lastname}!

khi này ta chỉ cần thêm bất cứ nội dung cần thiết bằng cách sử dụng hàm setValue

kết quả thu được sẽ là Hello John Doe!

setValues

Ngoài cách sử dụng nhiều hàm setValue thì ta có thể truyền 1 mảng nhiều phần tử vào hàm setValues

setImageValue

Ta có thể chèn hình ảnh vào văn bản mẫu bằng nhiều cách như sau

  • ${search-image-pattern}
  • ${search-image-pattern:[width]:[height]:[ratio]}
  • ${search-image-pattern:[width]x[height]}
  • ${search-image-pattern:size=[width]x[height]}
  • ${search-image-pattern:width=[width]:height=[height]:ratio=false}

Ví dụ

cloneBlock

Nội dung ở giữa ${block_name} và ${/block_name} sẽ được lặp lại 3 lần khi ta sử dụng:

Kết quả trả về sẽ là

ta cũng có thể truyền một mảng nhiều phần tử:

kết quả

replaceBlock

ta dùng hàm này để sửa 1 nội dung nào đó trong file mẫu

deleteBlock

Xóa một khối nội dung trong văn bản mẫu

cloneRow

Hàm này khá tiện khi trong văn bản mẫu có những nội dung dạng bảng:

Sẽ cho kết quả

cloneRowAndSetValues

cũng như hàm cloneRow tuy nhiên hàm cloneRowAndSetValues có vẻ hữu dụng hơn trong nhiều trường hợp dữ liệu truyền vào là dạng mảng:

Kết quả sẽ là

Lưu ý: Trong quá trình làm việc với file word có thể là do vô tình hoặc cố ý ta phải xuống dòng ở 1 số nội dung nào đó. Thì ta dùng </w:t><w:br/><w:t> không nên dùng n, <br />

Kết Luận

Ở bài viết này đã giới thiệu những khái niệm cũng như tính năng của thư viên PHPWord. Còn cách dùng thì tập chung vào phần sử dung PHPWord để tạo file từ một file mẫu có sẵn. Chúc thành công!

Tài liệu tham khảo

PHPWord

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo