#77567 gửi bởi hienktktdl
Ngày 09 Tháng 01 2011 , 09:54
Xin giới thiệu với các bạn thư viện Excel_reader2 của tác giả Vadim Tkachenko <vt@apachephp.com>
Đến thời điểm này các bản patch của thư viện đã hỗ trợ hoàn toàn Unicode.
Thư viện cho phép thể hiện nội dung file EXcel (xls) với các định dạng cơ bản nhất như font, size màu sắc đường viền và các định dạng cao hơn như trộn ô canh góng văn bản .v.v.
A. Download http://code.google.com/p/php-excel-reader/downloads/list
B. Cài đặt và hướng dẫn sử dụng sẽ thông qua một số demo cơ bản như sau:

1.Thể hiện toàn bộ nội dung một Sheet lên trang web: (File demo1.php)

Mã: Chọn hết
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="table.css"
</head>

<body>
<?php
$filename="demo1.xls"; //file excel demo
require_once 'excel_reader2_patch_applied.php'; //nhúng file thư viện
$data = new Spreadsheet_Excel_Reader($filename,true); //khởi tạo đối tượng
echo $data->dump(true,true); // hiện nội dung sheet đầu tiên
?>
</body>
</html>


Đối tượng $data->dump(true,true); sẽ in toàn bộ nội dung sheet có cú pháp đầy đủ như sau:
dump($row_numbers=false,$col_letters=false,$sheet=0,$table_class='excel')
Trong đó có tham số quan trọng là :
$sheet=0 //Đây là tham số mặc định chỉ trang tính đầu tiên, bạn có thể chỉ đinh 1, 2 ... để hiện các sheet khác
$table_class='excel' //Cũng là tham số mặc định cho hàm dùng css Table

2. Cho phép chọn Sheet để xem: (File demo2.php)

Khi file Excel có nhiều trang tính demo sẻ cho phép bạn lựa chọn để để xem một sheet bất kỳ trên Workbook.

Mã: Chọn hết
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>

<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="table.css"
</head>

<body>
<?php
$filename="demo2.xls";
require_once 'excel_reader2_patch_applied.php';
$data = new Spreadsheet_Excel_Reader($filename,true);

if (!ISSET($_GET['i'])){
$i=0;
}else{
$i=$_GET['i'];
}

echo $data->dump(true,true,$i);
for ($i=0;$i<sizeof($data->sheets);$i++){
echo "|<a href='demo.php?i=$i'>".$data->boundsheets[$i]['name']."</a>";
}
?>
</body>
</html>


3. Hiện số hàng cột theo yêu cầu

Trong trang tính Diem thi ta chỉ cần hiện các thông tin Họ và tên, ngày sinh, Điểm môn 1, môn 2, môn 3, Điểm TB ta cần đoạn code sau để hiện nội dung bảng điểm lên màn hình:
Hãy chú ý hai vòng lặp for và các chỉ số cột hàng sẽ giúp người lập trình chủ động thể hiện thông tin một cách chọn lọc.
Trước đây hienktktdl có giới thiệu một thư viên đọc file Excel với định dạng SpeetSheet XML để thực hiện thao tác Import dữ liệu từ file Excel vào CSDL MySQL. Với thư viện này bạn hoàn toàn có thể thao tác tương tự với đoạn code ngắn gọn như bên dưới.

Mã: Chọn hết
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
// chuong trinh demo doc truc tiep file excel với tiếng việt unicode
$filename="demo3.xls"; // file du lieu demmo chi gom 2 cot hoten va diem
require_once 'excel_reader2_patch_applied.php'; // nhung thu vien xu ly ma nguon mo
$data = new Spreadsheet_Excel_Reader($filename,true,"UTF-8"); // khoi tao doi tuong doc file excel
$rowsnum = $data->rowcount($sheet_index=0); // lay so hang cua sheet
$colsnum = $data->colcount($sheet_index=0); // lay so cot cua sheet
echo "<table>";
for ($hang=2;$hang<=$rowsnum;$hang++)
{// doc tu hang so 2 vi hang 1 la tieu de roi!
echo "<tr>";
for ($cot=0;$cot<=$colsnum;$cot++) echo "<td>".$data->val($hang,$cot)."<td>";
//nếu cần Import vào CSDL hãy thay thế lệnh INSET thay cho vòng FOR này
}
?>
</body>
</html>
Đính kèm
(98.18 KB) Đã tải về 589 lần
(46.09 KB) Đã tải về 579 lần
(14.38 KB) Đã tải về 581 lần
(61.24 KB) Đã tải về 582 lần
Sửa lần cuối bởi hienktktdl vào Ngày 09 Tháng 01 2011 , 17:38, với tổng số 2 lần sửa.

http://ktktdl.edu.vn
#77570 gửi bởi hienktktdl
Ngày 09 Tháng 01 2011 , 10:09
Để thuận lợi cho các bạn test thử
demo1 http://ktktdl.edu.vn/excell/demo1.php
deno 2 chọn sheet để xem http://ktktdl.edu.vn/excell/demo2.php
demo 3 hiện bảng điểm http://ktktdl.edu.vn/excell/demo3.php
Download code demo bên dưới
Cài đặt chép thư mục Excel vào www
Chạy http://localhost/excell/demo1.php
Hy vọng các bạn sẽ ứng dụng thư viên này vào các module cho nukeviet :D
Đính kèm
(31.66 KB) Đã tải về 311 lần
Sửa lần cuối bởi hienktktdl vào Ngày 09 Tháng 01 2011 , 17:38, với tổng số 1 lần sửa.

http://ktktdl.edu.vn
#77592 gửi bởi yeunukeviet
Ngày 09 Tháng 01 2011 , 16:38
Cảm ơn hienktktdl nhiều nhé.
Lâu rồi mới thấy bạn "tái xuất giang hồ". Mong sao bạn vẫn yêu quí và có những đóng góp thiết thực cho nukeviet như bạn đã từng làm trước đây.

http://nguoiviet.de
#77596 gửi bởi hienktktdl
Ngày 09 Tháng 01 2011 , 18:00
Bổ sung thêm tính năng đọc một vùng dữ liệu được chỉ định với hàm dump1
(đã thêm vào thư viện theo bản đính kèm)
Giả sử trong file excel
Hình ảnh
Ta chỉ cần thể hiện bảng thống kê kết quả có địa chỉ vùng E12:G15
Hàm Dump1 một cải tiến của Dump có thêm 4 tham số mới $startrow=1,$endrow=0,$startcol=1,$endcol=0 để định vị vùng chọn.

function dump1($row_numbers=false,$col_letters=false,$sheet=0,$table_class='excel',$startrow=1,$endrow=0,$startcol=1,$endcol=0)

Trong ví dụ trên ta sẽ gọi hàm như sau:

echo $data->dump1(true,true,0,$table_class='excel',12,15,5,7);//12 hàng bắt đầu, 15 hàng kết thúc, 5 cột bắt đầu là E, 7 cột kết thúc là G

Mã: Chọn hết
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link rel="stylesheet" type="text/css" href="table.css"
</head>

<body>
<?php
$filename="demo1.xls";
require_once 'excel_reader2_patch_applied.php';
$data = new Spreadsheet_Excel_Reader($filename,true);
echo $data->dump1(true,true,0,$table_class='excel',12,15,5,7);
?>
</body>
</html>
Sửa lần cuối bởi hienktktdl vào Ngày 09 Tháng 01 2011 , 23:44, với tổng số 1 lần sửa.

http://ktktdl.edu.vn
#77620 gửi bởi xman
Ngày 10 Tháng 01 2011 , 00:10
có 1 vấn đề mà từ lâu mình vẫn chưa xử lý đc đó là các file excel được xuất bởi software nó kô đơn thuần là row và column mà chứa các reference và thứ nữa là dùng bảng mã TCVN3, mình đã viết đc 1 class chuyển từ TCVN3 sang unicode nhưng các reference và merge cell để lấy address thì rất nhức đầu :)

http://www.thamtunamviet.com - Dịch vụ thám tử tư Việt Nam http://www.thegioimanguon.com - Thế giới mã nguồn
#81428 gửi bởi comein2003c
Ngày 01 Tháng 03 2011 , 05:39
Không có gì đề phàn nàn về chủ đề. Tuy nhiên với file Excel có dung lượng lớn thì sẽ không thể đọc đươc.
Mọi người nghiên cứu để đưa ra cách khắc phục nhé

-------------------------------- Nguyễn Văn Tuyến. Đơn vị: Trường THCS & THPT Nguyễn Bình http://thptnguyenbinhqn.edu.vn yahoo: Comein2003c Email: Comein2003c@gmail.com Phone:0973.07.07.00 - 01216.404.101
#82711 gửi bởi comein2003c
Ngày 17 Tháng 03 2011 , 20:01
Đọc rồi mà vẫn chưa test thử. Hôm nay test thì có vấn đề là host của mình không đọc được tiếng việt.
http://nguyenbinhqn.vnn.ms/excell/demo.php
http://nguyenbinhqn.vnn.ms/excell/demo2.php
http://nguyenbinhqn.vnn.ms/excell/demo3.php
Dù đã update bản excel_reader2_patch_applied mới về rồi
Các bác xem giúp em được không?

-------------------------------- Nguyễn Văn Tuyến. Đơn vị: Trường THCS & THPT Nguyễn Bình http://thptnguyenbinhqn.edu.vn yahoo: Comein2003c Email: Comein2003c@gmail.com Phone:0973.07.07.00 - 01216.404.101
#82723 gửi bởi comein2003c
Ngày 17 Tháng 03 2011 , 22:31
Đây là lỗi không thể hiện thị tiếng việt
Nên chú ý: iconv() [function.iconv]: Wrong charset, conversion from `UTF-16LE' to `UTF-8' is not allowed in file /modules/tailieu/excel_reader2_patch_applied.php on line 1718

-------------------------------- Nguyễn Văn Tuyến. Đơn vị: Trường THCS & THPT Nguyễn Bình http://thptnguyenbinhqn.edu.vn yahoo: Comein2003c Email: Comein2003c@gmail.com Phone:0973.07.07.00 - 01216.404.101