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

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

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

ดูแล้ว 44,675 ครั้ง




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

<?
$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 สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







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