php导出excel表

本文提供了一个使用PHP直接生成Excel文件的示例代码,通过自定义函数实现数据写入,并从数据库中读取数据填充到Excel表格中。该方法解决了导出文件时可能出现的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.chinaunix.net/uid-11600035-id-2866120.html

经过测试,非常好用。

<?php

function xlsBOF() {  

  echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);   

  return;  

}  

function xlsEOF() {  

  echo pack("ss", 0x0A, 0x00);  

  return;  

}  

function xlsWriteNumber($Row, $Col, $Value) {
$Value = iconv("UTF-8", "gb2312", $Value); //加上本语句,解决导出excel文件乱码问题20110629

  echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);  

  echo pack("d", $Value);  

  return;  

}  

function xlsWriteLabel($Row, $Col, $Value ) {  

$Value = iconv("UTF-8", "gb2312", $Value); //加上本语句,解决导出excel文件乱码问题20110629

  $L = strlen($Value);  

  echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);  

  echo $Value;  

return;  

}

    try{
        $pdo = new PDO('mysql:host=127.0.0.1;dbname=test','root','123456');
    }catch(PDOexception $e){
        echo $e->getMessage();
        exit();
    }
      $sql = "select * from user";
  $stmt = $pdo->query($sql);
     
  // 文件头
  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-Type: application/vnd.ms-excel; charset=UTF-8");
 

 header("Content-Disposition: attachment;filename=test统计表.xls ");

//header("Content-Disposition: inline;  filename=\"" . $filename . ".xls\"");

//iconv("utf-8", "gb2312", $filename);//解决文件引起的乱码".xls\"");  

  header("Content-Transfer-Encoding: binary ");

  // 向表中添加数据

  xlsBOF();  

  xlsWriteLabel(0,0,"主键id");  //(行号,列号,值)从第1行开始写标题

  xlsWriteLabel(0,1,"姓名");

  xlsWriteLabel(0,2,"用户uid");

 


    $xlsRow = 1;//从第2行开始写值
    while($array = $stmt->fetch(PDO::FETCH_ASSOC)){

        xlsWriteNumber($xlsRow,0,$array['id']);

        xlsWriteLabel($xlsRow,1,$array['name']);

        xlsWriteLabel($xlsRow,2,$array['uid']);
        

        $xlsRow++;

    }

  xlsEOF();

  exit();  


?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值