MỘT SỐ ĐỊNH DẠNG XUẤT BÁO CÁO PHỔ BIẾN
Định dạng DOC
Microsoft Word là một công cụ soạn thảo văn bản phổ biến của Microsoft, cho phép người dùng thao tác với văn bản thô, hiệu ứng phông chữ, màu sắc, hình ảnh đồ họa và đa phương tiện như âm thanh, video Nó cung cấp các công cụ kiểm tra chính tả và ngữ pháp cho nhiều ngôn ngữ, hỗ trợ người sử dụng hiệu quả hơn Các phiên bản của Word thường lưu tập tin với đuôi doc hoặc docx (từ Word 2007 trở đi) và có khả năng mở các tập tin văn bản thô (.txt) cũng như làm việc với định dạng khác như html và thiết kế trang web.
Định dạng XLS
Microsoft Excel là ứng dụng bảng tính do Microsoft phát triển cho hệ điều hành Windows và Mac OS, nổi bật với tính năng tính toán, công cụ đồ họa và bảng tính Các phiên bản Excel thường lưu tập tin với định dạng đuôi xls hoặc xlsx, đặc biệt là từ phiên bản Excel 2007 trở đi.
Định dạng PDF
PDF, viết tắt của Portable Document Format, là một định dạng tập tin văn bản phổ biến do Adobe Systems phát triển Tương tự như định dạng Word (.doc), PDF hỗ trợ văn bản, phông chữ, hình ảnh, âm thanh và nhiều hiệu ứng khác Điểm khác biệt lớn là việc hiển thị văn bản PDF không phụ thuộc vào cấu hình máy, phần mềm hay hệ điều hành của người dùng, giúp tài liệu PDF hiển thị nhất quán trên mọi thiết bị.
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên Nguyễn Văn Đức đã nhận thấy rằng định dạng PDF có nhiều ưu điểm nổi bật, khiến nó trở thành lựa chọn phổ biến cho việc phát hành sách, báo và tài liệu qua Internet Với khả năng tương thích cao và bảo toàn định dạng, PDF đã trở thành định dạng ưu việt so với các loại khác Do đó, hướng phát triển của em sẽ tập trung vào việc khai thác những lợi ích của định dạng PDF.
TRÌNH BÀY BÁO CÁO DẠNG PDF
Lợi ích
Mỗi định dạng tài liệu văn bản có những ưu điểm và nhược điểm riêng, và để được người dùng ưa chuộng, định dạng đó cần phải có những lợi thế vượt trội Định dạng PDF thường được ưa chuộng để tạo tài liệu nhờ vào những lợi ích mà cộng đồng đánh giá cao.
PDF được tạo ra nhanh chóng và dễ dàng, đáp ứng yêu cầu của khối lượng công việc lớn với nhịp độ nhanh và đòi hỏi cao Chỉ với vài thao tác đơn giản, người dùng có thể tạo và gửi tài liệu PDF qua Internet, giúp hoàn thành công việc hiệu quả.
Định dạng PDF nổi bật với tính bảo mật cao, giúp quản lý nguồn gốc và nội dung tài liệu dễ dàng hơn Để được chấp nhận hợp pháp, tài liệu điện tử phải ở định dạng không thể thay đổi mà không để lại dấu ấn điện tử Với các tùy chọn như hình mờ, mã hóa dữ liệu và mật khẩu, người dùng có thể thiết lập các biện pháp bảo mật hiệu quả để bảo vệ toàn vẹn nội dung và xuất xứ tài liệu Một lợi thế khác của PDF là khả năng nén tập tin lớn, giúp giảm kích thước tài liệu đến 25%, ví dụ như tài liệu 20 KB có thể nén xuống dưới 5 KB, từ đó tăng tốc độ mở tài liệu trên các máy tính và tối ưu hóa việc sử dụng trên Internet.
SỬ DỤNG TCPDF
Các lớp trong thư viện TCPDF
• TCPDF o MC_TCPDF o MYPDF o TCPDF_IMPORT o TOC_TCPDF
Khi sử dụng TCPDF để tạo tài liệu, bạn không cần phải lo lắng về việc chọn thư viện cụ thể nào, chỉ cần khai báo thư viện TCPDF là đủ Tất cả các công việc quản lý thư viện sẽ được TCPDF xử lý một cách tự động.
Bao hàm TCPDF
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Để bắt đầu, bạn cần tải thư viện TCPDF từ trang chủ www.tcpdf.org Sau khi tải về, hãy giải nén thư viện vào thư mục gốc của Apache; nếu bạn sử dụng XAMPP, thư mục này sẽ là htdocs, trong khi với các phiên bản Apache khác, nó có thể là thư mục www.
Bước tiếp theo với trình soạn thảo php chúng ta bao hàm thư viện với cú pháp: include(“/tcpdf.php”);
Ví dụ với tệp tin php được tạo này ở thư mục root: include(“tcpdf/tcpdf.php”);
XUẤT DỮ LIỆU RA ĐỊNH DẠNG DOC, XLS, CSV
Xuất ra tệp tin DOC
Chúng ta thêm phần header sau: header("Content-type: application/vnd.ms-word"); header("Content-Disposition: attachment;Filenameo-cao-diem-thi.doc");
Dòng đầu tiên header("Content-type: application/vnd.ms-word") xác định rằng tệp tin là định dạng Word, trong khi dòng thứ hai thông báo cho trình duyệt rằng nội dung là tệp đính kèm có tên 'bao-cao-diem-thi.doc'.
Xuất ra tệp tin XLS
Chúng ta thêm header sau: header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment;Filenameo-cao-diem-thi.xls");
Dòng đầu tiên của mã "header("Content-type: application/vnd.ms-excel")" xác định định dạng tệp tin là Excel, trong khi dòng thứ hai thông báo cho trình duyệt rằng nội dung là tệp đính kèm có tên 'bao-cao-diem-thi.xls'.
ỨNG DỤNG THỬ NGHIỆM
Mô tả cơ sở dữ liệu
Để xuất dữ liệu điểm thi từ cơ sở dữ liệu của Đại học Hòa Bình ra các định dạng tệp tin như PDF, Excel, Doc và CSV, chúng ta chỉ cần tập trung vào bảng thisinh với các trường thông tin gồm mã sinh viên (maSV), họ tên (hoTen), ngày sinh (ngaySinh), giới tính (gioiTinh), địa chỉ (diaChi), và điểm thi các môn (mon1, mon2, mon3) Việc này sẽ giúp cho quá trình in ấn trở nên dễ dàng và thuận tiện hơn.
Mã nguồn xuất dữ liệu điểm thi của thí sinh
5.2.1 Kết nối tới cơ sở dữ liệu
$con=mysql_connect('localhost', 'root', '');
//Chọn cơ sở dữ liệu quản lý điểm thi mysql_select_db('qldt');
//Các truy vấn tới cơ sở dữ liệu ở định dạng UTF-8 mysql_query("SET NAMES 'utf8'");
5.2.2 Xuất ra tệp tin PDF
//Thêm thư viện tcpdf require_once('tcpdf/tcpdf.php');
//Thêm cấu hình kết nối tới mysql require_once('connect.php');
//Chuyển đổi yyyy-mm-dd sang dd-mm-yyy function convert($ngaySinh){
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 73 return $day "/" $month "/" $year;
} // Tạo lớp MYPDF kết thừa lớp TCPDF class MYPDF extends TCPDF {
//Chỉnh header public function Header(){
$image_file = '/images/hoabinh.png';
$this->Image($image_file, PDF_MARGIN_LEFT, 10, 20, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);
$this->Cell((PDF_MARGIN_LEFT+25), 20, "ĐH Hòa Bình
- Báo cáo điểm của thí sinh");
$style = array('width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(PDF_MARGIN_LEFT, (PDF_MARGIN_TOP-
} //Chỉnh footer public function Footer(){
$this->Cell(0, 0, 'Trang ' $this->getAliasNumPage(), 0, false, 'R', 0, '', 0, false, 'T', 'M');
$style = array('width' => 0.1, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0));
$this->Line(PDF_MARGIN_LEFT, 285, 195, 285, $style); }
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 74
// Tải dữ liệu bảng từ mysql public function LoadData() {
$result=mysql_query('select * from thisinh order by (mon1+mon2+mon3) DESC'); while($row=mysql_fetch_array($result)){
$buff[8]=$row['mon1']+$row['mon2']+$row['mon3'];
// Bảng màu public function ColoredTable($header,$data) {
// Màu, độ rộng dòng và phông đậm
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 75
$num_headers = count($header); for($i = 0; $i < $num_headers; ++$i) {
// Thiết lập lại màu và phông chữ
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 76
//Tạo một đối tượng pdf của lớp MYPDF vừa được tạo bên trên với các thống số mặc định của TCPDF
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
//Thiết lập mặc định khoảng trống phông chữ
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP+10, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
//Tự động nhảy trang khi trang hiện tại đã đầy
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
//Thiết lập tỉ lệ ảnh
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 77
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$header = array('Mã', 'Họ tên', 'Ngày sinh', 'Giới tính', 'Địa chỉ', 'Môn 1', 'Môn 2','Môn 3', 'Tổng');
//Tính tỉ lệ biểu đồ //Tổng số thí sinh dự thi
$sql='select count(maSV) as tongsv from thisinh';
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 78 while($row=mysql_fetch_array($result1)){
} //Thí sinh có tổng điểm 3 môn từ 27 điểm trở lên
$sql1='select count(maSV) as top1 from thisinh where (mon1+mon2+mon3)>'';
$result2=mysql_query($sql1); while($row=mysql_fetch_array($result2)){
} //Thí sinh có tổng điểm 3 môn từ 20 đến dưới 27 điểm
$sql2='select count(maSV) as top2 from thisinh where (mon1+mon2+mon3) ';
$result3=mysql_query($sql2); while($row=mysql_fetch_array($result3)){
} //Thí sinh có tổng điểm 3 môn từ 15 đến dưới 20 điểm
$sql3='select count(maSV) as top3 from thisinh where (mon1+mon2+mon3)';
$result4=mysql_query($sql3); while($row=mysql_fetch_array($result4)){
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 79
$style = array('width' => 0.1, 'join' => 'round', 'color' => array(192, 192, 192));
$pdf->PieSector($xc, $yc, $r, 0, $goc1, 'FD', true, 90);
$pdf->PieSector($xc, $yc, $r, $goc1, $goc2, 'FD', true, 90);
$pdf->PieSector($xc, $yc, $r, $goc2, $goc3, 'FD', true, 90);
$pdf->PieSector($xc, $yc, $r, $goc3, 0, 'FD', true, 90);
//Màu text của tỉ lệ
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 80
$pdf->Text(($xc+sin($goc1/2*$pi/180)*$r*2/3-5), ($yc- cos($goc1/2*$pi/180)*$r*2/3), ($tile1 "%"));
$pdf->Text(($xc +sin((($goc2-$goc1)/2+$goc1)*$pi/180)*$r*2/3-
5), ($yc - cos((($goc2-$goc1)/2+$goc1)*$pi/180)*$r*2/3), $tile2
$pdf->Text(($xc +sin((($goc3-$goc2)/2+$goc2)*$pi/180)*$r*2/3-
5), ($yc -cos((($goc3-$goc2)/2+$goc2)*$pi/180)*$r*2/3), $tile3
$pdf->Text(($xc +sin(((360-$goc3)/2+$goc3)*$pi/180)*$r*2/3-5), ($yc -cos(((360-$goc3)/2+$goc3)*$pi/180)*$r*2/3), $tile4 "%"); //Chú Thích Biểu đồ
//Phong cách cho hình chữ nhật
$style = array('width' => 0.1, 'join' => 'round', 'color' => array(0, 0, 0));
$pdf->Rect($xc+$r*1.5, $yc-$r/2, 70, $r-5, 'D', array('all' =>
$pdf->Rect($xc+$r*1.5+3, $yc-$r/2+3, 4, 3, 'DF', $style, array(94,
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 81
$pdf->Text($xc+$r*1.5+8, $yc-$r/2+1.5, "Thí sinh từ 27 điểm trở lên");
$pdf->Rect($xc+$r*1.5+3, $yc-$r/2+10, 4, 3, 'DF', $style, array(195, 95, 92));
$pdf->Text($xc+$r*1.5+8, $yc-$r/2+8.5, "Thí sinh từ 20 đến dưới
$pdf->Rect($xc+$r*1.5+3, $yc-$r/2+17, 4, 3, 'DF', $style, array(162, 190, 103));
$pdf->Text($xc+$r*1.5+8, $yc-$r/2+15.5, "Thí sinh từ 15 đến dưới 20 điểm");
$pdf->Rect($xc+$r*1.5+3, $yc-$r/2+24, 4, 3, 'DF', $style, array(86, 150, 174));
$pdf->Text($xc+$r*1.5+8, $yc-$r/2+22.5, "Thí sinh từ dưới 15 điểm");
//Đóng và xuất ra tệp tin pdf
$pdf->Output('Bao-Cao-Diem-Thi.pdf', 'I');
Kết quả: Do trong cơ sở dữ liệu có nhiều thí sinh nên PDF có nhiều trang
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 82
Phần biểu đồ thống kê cuối:
Hình 5.2.2.2: Biểu đồ thống kê
5.2.3 Xuất ra tệp tin DOC
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Nguyễn Văn Đức, a student, has created a document for download titled "o-cao-diem-thi.doc" The document is formatted for Microsoft Word and is encoded in UTF-8 to ensure proper display of content.
//Yêu cầu tệp tin kết nối cơ sở dữ liệu require_once('connect.php');
//Chuyen ngay thang nam function convert($ngaySinh){
$year=$parts[0]; return $day "/" $month "/" $year;
//CSS echo " a{ text-decoration:none;
} table, th, td{ border:1px solid black; border-collapse:collapse } th{ background:rgb(93, 159, 115); color:white;
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 84 height: 27px;
$result=mysql_query('select * from thisinh order by (mon1+mon2+mon3) DESC');
Họ tên
Ngày Sinh
Giới Tính
Địa chỉ
$fill=0; while($row=mysql_fetch_array($result)){
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 85
The code dynamically generates a table row with alternating background colors based on the fill variable It displays student information, including their ID, full name, date of birth (formatted using a conversion function), gender, address, and scores for three subjects The total score for the three subjects is also calculated and displayed in the last cell of the row.
//Tổng số thí sinh dự thi
$sql='select count(maSV) as tongsv from thisinh';
$result1=mysql_query($sql); while($row=mysql_fetch_array($result1)){
} //Thí sinh có tổng điểm 3 môn từ 27 điểm trở lên
$sql1='select count(maSV) as top1 from thisinh where
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 86
$result2=mysql_query($sql1); while($row=mysql_fetch_array($result2)){
} //Thí sinh có tổng điểm 3 môn từ 20 đến 27 điểm
$sql2='select count(maSV) as top2 from thisinh where (mon1+mon2+mon3) ';
$result3=mysql_query($sql2); while($row=mysql_fetch_array($result3)){
} //Thí sinh có tổng điểm 3 môn từ 15 đến 20 điểm
$sql3='select count(maSV) as top3 from thisinh where (mon1+mon2+mon3)';
$result4=mysql_query($sql3); while($row=mysql_fetch_array($result4)){
} echo ""; echo "Thống kê";
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên Nguyễn Văn Đức đã trình bày một bảng tỉ lệ điểm thi của thí sinh Theo đó, tỉ lệ thí sinh đạt từ 27 điểm trở lên là " $pie1 "%", trong khi tỉ lệ thí sinh từ 20 đến dưới 27 điểm là " $pie2 "%" Tỉ lệ thí sinh từ 15 đến dưới 20 điểm chiếm " $pie3 "%" Cuối cùng, tỉ lệ thí sinh dưới 15 điểm là " (100-$pie1-$pie2-$pie3) "%".
Hình 5.2.3: Tệp tin Word được xuất ra
5.2.4 Xuất ra tệp tin XLS
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 88
Exporting an XLS file is similar to exporting a DOC file, with a slight modification in the header: use header("Content-type: application/vnd.ms-excel"); and header("Content-Disposition: attachment;Filename=exam-scores.xls");.
Hình 5.2.4: Tệp tin Excel được xuất ra
5.2.5 Xuất ra tệp tin CSV header("Content-Type: application/csv"); header("Content-Disposition: attachment;Filenameo-cao-diem- thi.csv"); header('Content-type: text/csv; charset=utf8');
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 89 require_once('connect.php');
//Chuyen ngay thang nam function convert($ngaySinh){
$year=$parts[0]; return $day "/" $month "/" $year;
The SQL query retrieves all records from the "thisinh" table, ordering the results by the total scores of three subjects (mon1, mon2, mon3) in descending order The output includes the student ID, full name, date of birth, gender, address, and scores for each subject, formatted as a CSV string Each record is processed in a loop to display the relevant information.
",".$row['diaChi'] ",".$row['mon1'] ",".$row['mon2']
",".($row['mon1']+$row['mon2']+$row['mon3'])."\n";
Khi mở tệp tin định dạng CSV bằng Microsoft Excel, có thể gặp lỗi phông chữ tiếng Việt Để khắc phục, trên thanh công cụ của Excel, bạn hãy chọn Data -> From Text, sau đó chọn tệp cần mở, chọn File origin là UTF-8 và nhấn Next.
>Mục Delimiters tích vào ô comma->Next->Finish->OK
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 90
Hình 5.2.5: Tệp tin định dạng CSV được xuât ra
Nghiên cứu và ứng dụng các phương pháp xuất báo cáo từ web
Sinh viên: Nguyễn Văn Đức Trang 91