ดึงข้อมูลจากฐานข้อมูลเป็น excel ด้วย php รองรับภาษาไทย

เขียนเมื่อ 14 ปีก่อน โดย Ninenik Narkdee
excel ฐานข้อมูล ภาษาไทย php

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ excel ฐานข้อมูล ภาษาไทย php





ตัวอย่างคลิก

<?
$connection=mysql_connect("localhost","root","") or die("เชื่อมต่อฐานข้อมูลไม่ได้");
mysql_select_db("thailocation") or die("ไม่สามารถเลือกฐานข้อมูลได้");
$q="select * from province order by province_id ";
$qr=mysql_query($q);
$row_num=mysql_num_rows($qr);
$col_arr=array("Province ID","Province Name","Province Part");
$col_num=count($col_arr);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=data.xls "); 
?>
<?php echo '<?xml version="1.0" encoding="windows-874"?>'; ?>

<?php echo'<?mso-application progid="Excel.Sheet"?>';?>

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font x:CharSet="222"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>
 <Worksheet ss:Name="ข้อมูลจังหวัดในประเทศไทย">
  <Table ss:ExpandedColumnCount="<?=$col_num?>" ss:ExpandedRowCount="<?=$row_num+1?>" x:FullColumns="1"
   x:FullRows="1">
   <Row>
   <?php foreach($col_arr as $key=>$value){ ?>
    <Cell><Data ss:Type="String"><?=$value?></Data></Cell>
	<?php } ?>	
   </Row>
<?php
while($rs=mysql_fetch_array($qr)){
?>	
   <Row>
    <Cell><Data ss:Type="Number"><?=$rs['province_id']?></Data></Cell>
    <Cell><Data ss:Type="String"><?=$rs['province_name']?></Data></Cell>
    <Cell><Data ss:Type="Number"><?=$rs['province_part']?></Data></Cell>		
   </Row>
<?php  }  ?>     
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <Selected/>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>

การใช้งานและส่วนที่ต้องปรับแต่ง

<?php   
$connection=mysql_connect("localhost","root","") or die("เชื่อมต่อฐานข้อมูลไม่ได้");   
mysql_select_db("thailocation") or die("ไม่สามารถเลือกฐานข้อมูลได้");   
$q="select * from province order by province_id ";   // ดึงข้อมูลที่ต้องการ
$qr=mysql_query($q);   
$row_num=mysql_num_rows($qr);   // หาจำนวนแถวของข้อมูล
$col_arr=array("Province ID","Province Name","Province Part");   // กำหนดหัวข้อของข้อมูล
$col_num=count($col_arr);   // หาจำนวนหัวข้อของข้อมูล
header("Pragma: public");   
header("Expires: 0");   
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");    
header("Content-Type: application/force-download");   // ให้ขึ้นดาวน์โหลด
header("Content-Type: application/octet-stream");   
header("Content-Type: application/download");;   
header("Content-Disposition: attachment;filename=data.xls ");    // กำหนดชื่อไฟล์
?> 

ส่วนของการแสดงข้อมูลในตาราง Excel

<?php   
// วนลูปแสดงข้อมูลแต่ละแถวทั้งหมด ในที่นี้มี 3 คอลัมน์
// หากข้อมูลมีมากกว่า 3 จำเป็นต้องเพิ่มจำนวน Cell เข้าไป
//   โดเยเพิ่ม  <Cell><Data ss:Type="Number">ฟิลด์ข้อมูล</Data></Cell>     
// สามารถกำหนดประเภทของข้อมูลว่าเป็น Type="Number" ตัวเลข หรือ Type="String"
while($rs=mysql_fetch_array($qr)){   
?>      
   <Row>   
    <Cell><Data ss:Type="Number"><?=$rs['province_id']?></Data></Cell>   
    <Cell><Data ss:Type="String"><?=$rs['province_name']?></Data></Cell>   
    <Cell><Data ss:Type="Number"><?=$rs['province_part']?></Data></Cell>         
   </Row>   
<?php  }  ?>  


   เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 27-06-2017


แก้ไข กรณีปัญหาภาษาไทย

ให้ set การตั้งค่าในส่วนของ การ query ฐานข้อมูล โดยเพิ่ม 

mysql_query("set character set utf8"); // กำหนดค่า character set ที่จะใช้แสดงผล     


เข้าไป เป็น

$connection=mysql_connect("localhost","root","test") or die("เชื่อมต่อฐานข้อมูลไม่ได้");
mysql_select_db("thailocation") or die("ไม่สามารถเลือกฐานข้อมูลได้");     
mysql_query("set character set utf8"); // กำหนดค่า character set ที่จะใช้แสดงผล   


และบรรทัด

<?php echo '<?xml version="1.0" encoding="windows-874"?>'; ?>  


ให้เปลี่ยนเป็น

<?php echo '<?xml version="1.0" encoding="utf-8"?>'; ?>


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ











URL สำหรับอ้างอิง











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ