Một số lớp xuất dữ liệu dạng excel trong PHP

Một số lớp xuất dữ liệu dạng excel trong PHP

Khi xây dựng ứng dụng web bạn sẽ có nhu cầu xuất dữ liệu sang một số định dạng để báo cáo hay làm tài liệu lưu trữ khi cần, hoặc với mục đích nhập dữ liệu sang các hệ thống khác. Bạn có thể xây dựng cho mình một lớp xuất dữ liệu để dùng khi cần nhưng trước hết bạn nên tham khảo một số lớp được viết sẵn mà tôi sẽ giới thiệu sau đây.

class xlsStream

Đây là lớp được viết khá hay bằng cách đăng ký một giao thức có thể đọc và ghi dữ liệu với định dạng excel, tác giả thuộc về Ignatius Teo được viết từ năm 2005. Cách sử dụng:

require_once "excel.php";
$export_file = "xlsfile://tmp/example.xls";
$fp = fopen($export_file, "wb");
if (!is_resource($fp)){
    die("Cannot open $export_file");
}
// Dữ liệu ví dụ có thể được lấy từ database
$assoc = array(
    array("name"=>"Khanh","nickname"=>"Kevin"),
    array("name"=>"Vinh","nickname"=>"Jimmy"),
    array("name"=>"Hai","nickname"=>"cute")
);
// Ghi dữ liệu vào tập tin
fwrite($fp, serialize($assoc));
fclose($fp);

Bạn cần chú ý tới giao thức xlsfile:// sau đó đường dẫn nơi tập tin sẽ lưu trữ tính từ đường dẫn gốc trên hệ thống của bạn, đây là lớp viết khá ngắn gọn và giễ dùng nhưng chỉ tiếc là khi tôi thử nghiệm thì nó không thể hiển thị được dữ liệu tiếng Việt. Để xem chi tiết và tải ứng dụng bạn có thể truy cập code.google.com.

class php-export-data

Thỏa mãn nhu cầu dữ liệu tiếng Việt đây là lớp viết ngắn gọn có bố cục rất rõ ràng, mạch lạc, và có thể mở rộng, tác giả thuộc về Eli Dickinson. Sơ qua về cấu trúc của lớp bạn có thể thấy ứng dụng có xây dựng một abstract class với tên ExportData xác định một số thuộc tính và phương thức chính để bạn có thể kế thừa xuất thành nhiều định dạng khác và cũng để khai báo tùy chọn hành động mà bạn muốn như hành động download, lưu trữ, hay không làm gì.

Cách sử dụng

require "php-export-data.class.php";
$excel = new ExportDataExcel('browser');
$excel->filename = "test.xls";
$data = array(
  array(1,2,3),
  array("Ngô Văn Khương","Đinh Hữu Chiến","semi"),
  array("1273623874628374634876","=asdf","10-10"),
  array("2010-01-02 10:00AM","1/1/11","10-10"),
  array("1234","12.34","-123."),
  array("-12345678901234567890","0.0000000000123456789","-"),
);
$excel->initialize();
foreach($data as $row) {
  $excel->addRow($row);
}
$excel->finalize();

Chúng ta có 3 lớp có thể sử dụng là ExportDataExcel để xuất định dạng excel, ExportDataTSV để xuất định dạng TSV, ExportDataCSV để xuất định dạng CSV. Khi khai báo 1 trong 3 lớp trên bạn có 3 tùy chọn tham số là 'browser' để xuất thành tập tin có thể download, 'file' để xuất thành tập tin có thể lưu trữ, và  'string' không làm gì cả. Sau khi tạo giá trị filename bạn có 3 phương thức để sử dụng là initialize(), addRow(), finalize() bạn chú ý để 3 phương thức theo thứ tự trước sau như trên, phương thức addRow() sẽ thêm từng dòng dữ liệu vào tập tin của bạn. Thực chất file excel tạo được là một tập tin xml được định nghĩa để phần mềm office có thể đọc được, và nó cũng đã sét encoding cho ta là UTF-8 nên việc hiển thị tiếng Việt là miễn bàn. Với tùy chọn 'string' bạn có thể dùng thêm phương thức getString() để trả về chuỗi dữ liệu và hiển thị trên trình duyệt. Tải class và demo từ github.com.

class Excel_XML

Đây là ứng dụng làm cơ sở cho ứng dụng xuất thành tập tin excel của Ignatius Teo được giới thiệu ở trên. Lớp được viết khá chặt chẽ, về cơ bản là việc tạo ra một tập tin có cấu trúc xml mà phần mềm office có thể đọc được, bạn cũng có thể xuất nó thành tập tin với phần mở rộng xml hay xls.

Cách sử dụng:

require dirname(__FILE__) . '/php-excel.class.php';
$data = array(
  0 => array('Mr.', 'Văn Khương', 'E-Mail'),
  array(1, 'Oliver Schwarz', '[email protected]'),
  array(2, 'Hasematzel', '[email protected]'));
$xls = new Excel_XML;
$xls->addWorksheet('Sheet1', $data);
$xls->addWorksheet('Sheet2', $data);
$xls->sendWorkbook('test.xls');
//$xls->writeWorkbook('test.xml');
//echo $xls->getWorkbook();

Phương thức addWorksheet() có 2 tham số là tên worksheet và dữ liệu, một điểm cộng cho ứng dụng là bạn có thể thêm được nhiều worksheet, phương thức sendWorkbook() sẽ xuất tập tin thành dạng có thể download với tham số là tên tập tin. Để xuất tập tin lưu trữ bạn sẽ dùng đến phương thức writeWorkbook() với tham số thứ nhất là tên tập tin, tham số thứ hai là đường dẫn của tập tin mặc định là để trống. Để trả về một chuỗi bạn sẽ dùng phương thức getWorkbook(). Tải lớp ứng dụng của tác giả từ code.google.com.

Một ứng dụng "hầm hố" khác là ứng dụng PHPexcel phiên bản hiện tại là 1.7.8. Đó là một dự án lớn với rất nhiều tính năng mạnh mẽ chứ không đơn thuần chỉ là xuất dữ liệu dạng excel mà còn thao tác dữ liệu với các tính năng có trên excel. Ứng dụng có tài liệu hướng dẫn và lượng lớn ví dụ, nếu bạn muốn nghiên cứu về nó hãy truy cập codeplex.com.

Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Cựu nhân viên Google trở thành tân CEO của Yahoo!

Cựu nhân viên Google trở thành tân CEO của Yahoo!

Theo tờ thời báo New York, lãnh đạo lâu năm của Google sẽ bắt đầu dẫn dắt Yahoo! vượt qua khó khăn sau một loạt các rắc rối liên quan đến vị trí CEO của công ty.

Học cách How to create a Custom REST API using a Controller in Drupal 9

Học cách Custom REST API using a Controller in Drupal 9 cùng Postman

Now we have everything ready, let’s enable this module, also since we are using

SEO

Chợ Điện Tử và thủ thuật SEO mũ đen

Chuyện gì xảy ra khi Chợ Điện Tử, một ông trùm thương mại điện tử, dùng tiền để nhanh chóng khẳng định sức mạnh của mình trên các máy tìm kiếm với các thủ thuật seo mũ đen. Liệu họ có thành công với phương pháp của mình?

Công ty diệt chuột T&C

 

Diet con trung