十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。
公司主营业务:成都网站建设、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出昌吉免费做网站回馈大家。
复制代码
代码如下:
//
输出Excel文件头,可把user.csv换成你要的文件名
header('Content-Type:
application/vnd.ms-excel');
header('Content-Disposition:
attachment;filename="user.csv"');
header('Cache-Control:
max-age=0');
//
从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
$sql
=
'select
*
from
tbl
where
……';
$stmt
=
$db-query($sql);
//
打开PHP文件句柄,php://output
表示直接输出到浏览器
$fp
=
fopen('php://output',
'a');
//
输出Excel列名信息
$head
=
array('姓名',
'性别',
'年龄',
'Email',
'电话',
'……');
foreach
($head
as
$i
=
$v)
{
//
CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i]
=
iconv('utf-8',
'gbk',
$v);
}
//
将数据通过fputcsv写到文件句柄
fputcsv($fp,
$head);
//
计数器
$cnt
=
0;
//
每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit
=
100000;
//
逐行取出数据,不浪费内存
while
($row
=
$stmt-fetch(Zend_Db::FETCH_NUM))
{
$cnt
++;
if
($limit
==
$cnt)
{
//刷新一下输出buffer,防止由于数据过多造成问题
ob_flush();
flush();
$cnt
=
0;
}
foreach
($row
as
$i
=
$v)
{
$row[$i]
=
iconv('utf-8',
'gbk',
$v);
}
fputcsv($fp,
$row);
}
优点简单易用,非常节省内存,不依赖第三方类库。
while($r=mysql_fetch_assoc($rs)) {
file_put_contents('文件名', '"' . join('","', $r) . '"' .PHP_EOL, FILE_APPEND);
}
//第一种 ?php$conn = mysql_connect("主机名","用户名","密码");mysql_select_db("数据库名",$conn);$sql = "select * from user";$result = mysql_query($sql);$data="";while($row = mysql_fetch_row($result)){ foreach($row as $v){ $data .=$v."|"; //加个树线隔开字段 } nl2br($data); //读完一行回车}file_put_contents("abc.txt",$data); //第二种?php$filename = "abc.txt";$res = fopen($filename,"r");while(!feof($res)){$buffer = fgets($res);$buffer = str_replace(' ', '|', $buffer); $array = explode('|', $buffer); foreach($array as $v){if(strlen($v)0){$arr[] = $v;}}}fclose($res);//组装数组插入数据库就可以了
从数据库中读取存储了与用户有关的资料,然后把这些资料放到一个以用户ID(userid)命名的文件夹中,再在这个文件夹里创建一个userid.doc文件,用于存放取到的用户资料,用户资料包括文字类型、图片。