1. 云栖社区>
  2. PHP教程>
  3. 正文

简单的php生成csv格式和excel格式

作者:用户 来源:互联网 时间:2017-12-01 20:17:32

phpexcelcsv简单格式生成

简单的php生成csv格式和excel格式 - 摘要: 本文讲的是简单的php生成csv格式和excel格式, 本文转自IT摆渡网欢迎转载,请标明出处。 更多php文章请阅读 php问题解决   之前写过一篇php生成excel的文章 thinkphp整合系列之phpexcel生成生成excel文件   但是phpexcel有一个严重的缺点;那就

本文转自IT摆渡网欢迎转载,请标明出处。
简单的php生成csv格式和excel格式-

更多php文章请阅读

php问题解决

  之前写过一篇php生成excel的文章 thinkphp整合系列之phpexcel生成生成excel文件

  但是phpexcel有一个严重的缺点;那就是一个大大的“慢”字;

  数据量小的时候还好;当数据量稍微大一点;

  那生成excel的过程99.999%的时间都是在那看浏览器转圈了;

  那有木有一个效率高点的呢?当然有了;而且非常简单;

  贴代码;

/** * 数据转csv格式的excle * @param  array $data      需要转的数组 * @param  string $filename 生成的excel文件名 *      示例数组:        $a = array(            '1,2,3,4,5',            '6,7,8,9,0',            '1,3,5,6,7'            ); */function create_csv($data,$filename='simple.csv'){    // 防止没有添加文件后缀    $filename=str_replace('.csv', '', $filename).'.csv';    Header( "Content-type:  application/octet-stream ");    Header( "Accept-Ranges:  bytes ");    Header( "Content-Disposition:  attachment;  filename=".$filename);    foreach( $data as $k => $v){        // 替换掉换行        $v=preg_replace('//s*/', '', $v);        // 转成gbk以兼容office乱码的问题        echo iconv('UTF-8','GBK',$v)."/r/n";    }}

调用示例:

$data=array(    '1,2,3,4,5',    '6,7,8,9,0',    '1,3,5,6,7'    );create_csv($data);

  其实原理很简单;就是以逗号作为每个单元格的分解;再以换行作为表格的换行;

  最后生成csv格式的文件就可以了;

  下载到本地后;直接以当text用记事本或者文本编辑器都可以直接打开编辑;
  
简单的php生成csv格式和excel格式-

  // 回复储的分割线*

  实际应用中数据一般是从数据库取出的二维数组;

  应储的问题;更新下函数;以兼容二维数组;

  同时可以直接指定表头;

/** * 数据转csv格式的excle * @param  array $data      需要转的数组 * @param  string $header   要生成的excel表头 * @param  string $filename 生成的excel文件名 *      示例数组:        $data = array(            '1,2,3,4,5',            '6,7,8,9,0',            '1,3,5,6,7'            );        $header='用户名,密码,头像,性别,手机号'; */function create_csv($data,$header=null,$filename='simple.csv'){    // 如果手动设置表头;则放在第一行    if (!is_null($header)) {        array_unshift($data, $header);    }    // 防止没有添加文件后缀    $filename=str_replace('.csv', '', $filename).'.csv';    Header( "Content-type:  application/octet-stream ");    Header( "Accept-Ranges:  bytes ");    Header( "Content-Disposition:  attachment;  filename=".$filename);    foreach( $data as $k => $v){        // 如果是二维数组;转成一维        if (is_array($v)) {            $v=implode(',', $v);        }        // 替换掉换行        $v=preg_replace('//s*/', '', $v);        // 转成gbk以兼容office乱码的问题        echo iconv('UTF-8','GBK',$v)."/r/n";    }}

//*******************分割线 *********************

导出csv格式没法设置数据的格式;
这里给出一个方案;
可以在每个单元格后面追加一个看不见的tab制表符;
这样就不是数字格式;
也就不会被显示成科学计数法了;

/** * 数据转csv格式的excle * @param  array $data      需要转的数组 * @param  string $header   要生成的excel表头 * @param  string $filename 生成的excel文件名 *      示例数组:        $data = array(            '1,2,3,4,5',            '6,7,8,9,0',            '1,3,5,6,7'            );        $header='用户名,密码,头像,性别,手机号'; */function create_csv($data,$header=null,$filename='simple.csv'){    // 如果手动设置表头;则放在第一行    if (!is_null($header)) {        array_unshift($data, $header);    }    // 防止没有添加文件后缀    $filename=str_replace('.csv', '', $filename).'.csv';    ob_clean();    Header( "Content-type:  application/octet-stream ");    Header( "Accept-Ranges:  bytes ");    Header( "Content-Disposition:  attachment;  filename=".$filename);    foreach( $data as $k => $v){        // 如果是二维数组;转成一维        if (is_array($v)) {            $v=implode(',', $v);        }        // 替换掉换行        $v=preg_replace('//s*/', '', $v);        // 解决导出的数字会显示成科学计数法的问题        $v=str_replace(',', "/t,", $v);        // 转成gbk以兼容office乱码的问题        echo iconv('UTF-8','GBK',$v)."/t/r/n";    }}

阅读了这篇文章的人还阅读了

在线学习PHP的好网站有哪些
PHP时间格式转换加减
php程序常用自检错误方法
提供PHP问题错误修改服务
PHP出现错误的查错方法总结

th7cn

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php , excel , csv , 简单 , 格式 生成 ,以便于您获取更多的相关知识。

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

开发者常用软件,超百款实用软件一站式提供