php原生导出excel文件的两种方法(推荐)

所属分类: 网络编程 / PHP编程 阅读数: 1550
收藏 0 赞 0 分享

第一种方法:

$filename='文件名称';
  $filetitle='你的标题';
  if($_POST){
    set_time_limit(10000);
    $title = '';
    ini_set('memory_limit','300M');
    header('Content-Type: application/vnd.ms-excel;charset=utf-8');
    $name = $title.".xls";
    header('Content-Disposition: attachment;filename='.$name.'');
    header('Cache-Control: max-age=0');
    $where = "1=1";
    $sql = "";
    $query = DB::Query($sql);
    // PHP文件句柄,php://output 表示直接输出到浏览器 
    $fp = fopen('php://output', 'a');
    // 输出Excel列头信息 
    $head = array('ID');
    //字符替换
    $p_new_lines = array("\r\n", "\n","\t","\r","\r\n", "<pre>","</pre>","<br>","</br>","<br/>");
    $p_change_line_in_excel_cell = '';

    foreach($head as $v){
      echo iconv('utf-8','gb2312',$v) . "\t";
    }
    echo "\n";
    // 计数器 
    $cnt = 0;
    // 每隔$limit行,刷新一下输出buffer,节约资源 
    $limit = 100000;
    // 逐行取出数据,节约内存
    while ($res = mysql_fetch_assoc($query)) {
      $cnt ++;
      if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 
        ob_flush();
        flush();
        $cnt = 0;
      } 
      echo trim($res['id']). "\t";
      echo "\n";
    }

  }

第二种方法:

$filename='文件名称';
  $filetitle='你的标题';
  if($_POST){
    $title = '';
    ini_set('memory_limit','300M');
    header('Content-Type: application/vnd.ms-excel;charset=utf-8');
    $name = $title.".xls";
    header('Content-Disposition: attachment;filename='.$name.'');
    header('Cache-Control: max-age=0');
    echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
      xmlns:x="urn:schemas-microsoft-com:office:excel"
      xmlns="http://www.w3.org/TR/REC-html40">
    <head>
      <meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
      <meta http-equiv=Content-Type content="text/html; charset=gb2312">
      <!--[if gte mso 9]><xml>
      <x:ExcelWorkbook>
      <x:ExcelWorksheets>
       <x:ExcelWorksheet>
       <x:Name></x:Name>
       <x:WorksheetOptions>
        <x:DisplayGridlines/>
       </x:WorksheetOptions>
       </x:ExcelWorksheet>
      </x:ExcelWorksheets>
      </x:ExcelWorkbook>
      </xml><![endif]-->
    </head>';
    $where = "1=1";

    $sql = " ";
    mysql_query('set names "utf8"');
    mysql_set_charset('utf8');
    $query = DB::Query($sql);

    // PHP文件句柄,php://output 表示直接输出到浏览器 
    $fp = fopen('php://output', 'a');
    // 输出Excel列头信息 
    $head = array('ID','xxx');
    //字符替换
    $p_new_lines = array("\r\n", "\n","\t","\r","\r\n", "<pre>","</pre>","<br>","</br>","<br/>");
    $p_change_line_in_excel_cell = '';
    echo "<table>";
    echo "<tr>";
    foreach($head as $v){
      echo "<td>".iconv('utf-8','gb2312',$v)."</td>";
    }
    echo "</tr>";
    // 逐行取出数据,节约内存
    while ($res = mysql_fetch_assoc($query)) {
      echo "<tr>";
      echo "<td style='vnd.ms-excel.numberformat:@'>".$res['id']."</td>";
      echo "<td>".iconv('utf-8', 'gb2312', $res['xxx']."</td>";
      echo"</tr>";
    }
    echo "</table>";
  }

以上这篇php原生导出excel文件的两种方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

php实现的美国50个州选择列表实例

这篇文章主要介绍了php实现的美国50个州选择列表实例,可实现让当前州为选中状态的功能,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用递归生成文章树

写递归函数,可考虑缓存,定义一些静态变量来存上一次运行的结果,多程序运行效率很有帮助.大概步骤如下:首先到数据库取数据,放到一个数组,然后把数据转化为一个树型状的数组,最后把这个树型状的数组转为html代码。下面我们来看个实例
收藏 0 赞 0 分享

wordpress安装过程中遇到中文乱码的处理方法

这篇文章主要介绍了wordpress安装过程中遇到中文乱码的处理方法,是个人项目中遇到的一个奇葩事件,经过一番研究,终于解决,这里记录下来分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

php的crc32函数使用时需要注意的问题(不然就是坑)

这篇文章主要介绍了php的crc32函数使用时需要注意的问题(不然就是坑) ,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP中把对象转换为关联数组代码分享

这篇文章主要介绍了PHP中把对象转换为关联数组代码分享,本文直接给出实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

php检测url是否存在的方法

这篇文章主要介绍了php检测url是否存在的方法,涉及php中get_headers及正则匹配的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php获取twitter最新消息的方法

这篇文章主要介绍了php获取twitter最新消息的方法,涉及php操作curl及正则替换的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

php遍历CSV类实例

这篇文章主要介绍了php遍历CSV类,实例分析了php针对csv文件的打开、读取及遍历的技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

PHP使用mysqldump命令导出数据库

最近用php写一个数据备份的功能。做法是使用php的system函数执行mysqldump命令,进行备份,这里分享给大家,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

PHP用反撇号执行外部命令

shell_exec() 命令行实际上仅是反撇号 ` 操作符的变体,如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。
收藏 0 赞 0 分享
查看更多