Pages

Subscribe:

Ads 468x60px

Labels

顯示具有 pdf 標籤的文章。 顯示所有文章
顯示具有 pdf 標籤的文章。 顯示所有文章

2015年5月6日 星期三

[教學] 如何利用PHP製作並匯出PDF報表


首先可以到FPDF網站下載程式,當然FPDF的網站有教學也值得前往觀看http://www.fpdf.org/
或直接點選這邊下載fpdf16.zip
因為FPDF的網站是英文的,因此若要使用中文字,
則需要再下載chinese-unicode.rar
好啦,將上面的檔案下載之後解壓縮放入網站的資料夾就可以開始囉

test.php
  1. $hostname = "localhost";   //主機名稱
  2. $database = "test";              //資料庫名稱
  3. $username = "xxxx";            //資料庫使用者帳號
  4. $password = "****";            //資料庫使用者密碼

  5. $test = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 
  6. mysql_select_db("test",$test);
  7. mysql_query("set names 'utf8'");

  8. ?>
複製代碼



reportSQL.php

  1. mysql_select_db($database, $test);

  2. //index(首頁)
  3. $query_index = "SELECT * FROM `flow` WHERE date = CURDATE( ) AND page = 'index'";
  4. $index = mysql_query($query_index, $test) or die(mysql_error());
  5. $totalRows_index = mysql_num_rows($index);
  6. $query_index2 = "SELECT * FROM `flow` WHERE page = 'index'";
  7. $index2 = mysql_query($query_index2, $test) or die(mysql_error());
  8. $totalRows_index2 = mysql_num_rows($index2);

  9. //introduce(品牌介紹)
  10. $query_introduce = "SELECT * FROM `flow` WHERE date = CURDATE( ) AND page = 'introduce'";
  11. $introduce = mysql_query($query_introduce, $test) or die(mysql_error());
  12. $totalRows_introduce = mysql_num_rows($introduce);
  13. $query_introduce2 = "SELECT * FROM `flow` WHERE page = 'introduce'";
  14. $introduce2 = mysql_query($query_introduce2, $test) or die(mysql_error());
  15. $totalRows_introduce2 = mysql_num_rows($introduce2);

  16. //......................(其餘頁面寫法同上)

  17. ?>
複製代碼



report.php
  1. require('chinese-unicode.php');            //匯入剛剛下載的中文化的FPDF
  2. require_once('../Connections/test.php');   //匯入連結資料庫的語法
  3. require_once('../require/reportSQL.php');  //匯入報表的SQL語法
  4. $pdf=new PDF_Unicode();                    //建立PDF_Unicode
  5. $pdf->Open();                              //開啟
  6. $pdf->AddPage();                           //新的一頁
  7. $pdf->AddUniCNShwFont('uni');              //加入中文
  8. $pdf->SetFont('uni','',16);                //設定字型與字體大小
  9. //接著將資料放入一維陣列中
  10. $row0=array('瀏覽頁面','今日人數流量(人)','總人數流量(人)');
  11. $row1=array('首頁',$totalRows_index,$totalRows_index2);
  12. $row2=array('品牌介紹',$totalRows_introduce,$totalRows_introduce2);
  13. $row3=array('經營理念',$totalRows_manage,$totalRows_manage2);
  14. $row4=array('代理品牌',$totalRows_agent,$totalRows_agent2);
  15. $row5=array('產品',$totalRows_product,$totalRows_product2);
  16. $row6=array('公告發佈',$totalRows_publish,$totalRows_publish2);
  17. $row7=array('活動新訊',$totalRows_activities,$totalRows_activities2);
  18. $row8=array('素材介紹',$totalRows_material,$totalRows_material2);
  19. $row9=array('營業據點',$totalRows_place,$totalRows_place2);
  20. $row10=array('聯絡我們',$totalRows_contact,$totalRows_contact2);

  21. //今日人數流量統計
  22. $today=$totalRows_index+$totalRows_introduce+$totalRows_manage+$totalRows_agent+$totalRows_product+$totalRows_publish+$totalRows_activities+$totalRows_material+$totalRows_place+$totalRows_contact;
  23. $total=$totalRows_index2+$totalRows_introduce2+$totalRows_manage2+$totalRows_agent2+$totalRows_product2+$totalRows_publish2+$totalRows_activities2+$totalRows_material2+$totalRows_place2+$totalRows_contact2;
  24. $row11=array('統計',$today,$total);
  25. //再將資料放入2維陣列中
  26. $trow=array($row0,$row1,$row2,$row3,$row4,$row5,$row6,$row7,$row8,$row9,$row10,$row11);

  27. //設定表格的寬度
  28. $w=array(60,65,60);

  29. //迴圈
  30. for($j=0;$j
  31.   for($i=0;$i
  32.    $pdf->Cell($w[$i],7,$trow[$j][$i],1,0,'C');     //將資料放入表格內
  33.   } $pdf->Ln();                                    //下一列
  34. }
  35. $pdf->Output();                                   //輸出呈現
  36. ?>
複製代碼

接下來從瀏覽器觀看的結果如下圖:



真的是一個超方便的工具喔 ^ ^~~


Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])

w
Cell width. If 0, the cell extends up to the right margin.
h
Cell height. Default value: 0.
txt
String to print. Default value: empty string.
border
Indicates if borders must be drawn around the cell. The value can be either a number:
0: no border
1: frame
or a string containing some or all of the following characters (in any order):
L: left
T: top
R: right
B: bottom
Default value: 0.
ln
Indicates where the current position should go after the call. Possible values are:
0: to the right
1: to the beginning of the next line
2: below
Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0.
align
Allows to center or align the text. Possible values are:
L or empty string: left align (default value)
C: center
R: right align
fill
Indicates if the cell background must be painted (true) or transparent (false). Default value: false.
link
URL or identifier returned by AddLink().
Example

  1. // Set font
  2. $pdf->SetFont('Arial','B',16);
  3. // Move to 8 cm to the right
  4. $pdf->Cell(80);
  5. // Centered text in a framed 20*10 mm cell and line break
  6. $pdf->Cell(20,10,'Title',1,1,'C');
複製代碼