PHP如何导出Excel文件

PHP如何导出Excel文件,第1张

昨天项目里有个新需求,客户希望把一些数据能导出成为Excel表格,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一个比较著名的库:PHPExcel。下面是一个简单的demo,分享给大家,希望可以帮到有同样需求的朋友。

1.百度:phpexcel,结果如图所示,点击第一个结果;

PHP导出Excel,PHP输入Excel

2.进入官网后,找到右边的download按钮,下载,下载完成的是一个压缩文件,解压放到你的项目目录里,根据个人情况而定;

PHP导出Excel,PHP输入Excel

PHP导出Excel,PHP输入Excel

3.因为这里给大家做演示,所以建了一个测试文件,有点基础的都能明白是怎么回事,下面进入代码;

PHP导出Excel,PHP输入Excel

4.

//引入PHPExcel库文件(路径根据自己情况)

include './phpexcel/Classes/PHPExcel.php'

//创建对象

$excel = new PHPExcel()

//Excel表格式,这里简略写了8列

$letter = array('A','B','C','D','E','F','F','G')

//表头数组

$tableheader = array('学号','姓名','性别','年龄','班级')

//填充表头信息

for($i = 0$i <count($tableheader)$i++) {

$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]")

}

PHP导出Excel,PHP输入Excel

5.

//表格数组

$data = array(

array('1','小王','男','20','100'),

array('2','小李','男','20','101'),

array('3','小张','女','20','102'),

array('4','小赵','女','20','103')

)

//填充表格信息

for ($i = 2$i <= count($data) + 1$i++) {

$j = 0

foreach ($data[$i - 2] as $key=>$value) {

$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value")

$j++

}

}

PHP导出Excel,PHP输入Excel

6.

//创建Excel输入对象

$write = new PHPExcel_Writer_Excel5($excel)

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/vnd.ms-execl")

header("Content-Type:application/octet-stream")

header("Content-Type:application/download")

header('Content-Disposition:attachmentfilename="testdata.xls"')

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

$write->save('php://output')

PHP导出Excel,PHP输入Excel

7.打开页面,刷新的时候会d出对话框,让你选择文件保存路径和文件名称,我直接放在了桌面上,如图所示;

PHP导出Excel,PHP输入Excel

PHP导出Excel,PHP输入Excel

8.打开表格后,数据和格式跟代码中的一致,说明PHP导出的Excel是正确的。如果出现错误,检查一下你的表格数组和数据数组吧。

PHP导出Excel,PHP输入Excel

讲的复杂了啊!\x0d\x0a你先在一个完整版的PHPExcel之后解压,在“Examples”目录下会找到一大堆例子,根据你的要求这个“01simple-download-xlsx.php”文件就可以了!\x0d\x0a注:你先保持“01simple-download-xlsx.php”文件所在的目录位置不要变,测试好了,再改变名,移到别的地方,地方变了的话,文件里的 “require_once dirname(__FILE__) . '/../Classes/PHPExcel.php'”的所在位置也要变!\x0d\x0a我们要改动代码很少,如下:\x0d\x0a// Add some data\x0d\x0a$objPHPExcel->setActiveSheetIndex(0)\x0d\x0a->setCellValue('A1', 'Hello')\x0d\x0a->setCellValue('B2', 'world!')\x0d\x0a->setCellValue('C1', 'Hello')\x0d\x0a->setCellValue('D2', 'world!')\x0d\x0a\x0d\x0a// Miscellaneous glyphs, UTF-8\x0d\x0a$objPHPExcel->setActiveSheetIndex(0)\x0d\x0a->setCellValue('A4', 'Miscellaneous glyphs')\x0d\x0a->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç')\x0d\x0a、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\x0d\x0a直接用的我的替换\x0d\x0a$objPHPExcel->setActiveSheetIndex(0)//这个就是现实导出的表第一行,有几列是根据你的那张表有几列!\x0d\x0a->setCellValue('A1', '单号')\x0d\x0a->setCellValue('B1', '标题')\x0d\x0a->setCellValue('C1', '内容')\x0d\x0a->setCellValue('D1', '序列')\x0d\x0a->setCellValue('E1', '数字')\x0d\x0a//下面实现的就是建立数据库连接,直接到表,你的连接数据库、表、字段应该与我的不一样,你可以参考\x0d\x0a$conn=@mysql_connect("localhost","root","root") or die("数据库服务器连接错误".mysql_error())//连接mysql数据库\x0d\x0amysql_select_db("temp",$conn) or die("数据库访问错误".mysql_error())//数据库\x0d\x0amysql_query("set character set gb2312")\x0d\x0amysql_query("set names gb2312")\x0d\x0a\x0d\x0a$sqlgroups="select * from test "//查询这一张表的条件\x0d\x0a$resultgroups=mysql_query($sqlgroups)\x0d\x0a$numrows=mysql_num_rows($resultgroups)\x0d\x0aif ($numrows>0)\x0d\x0a{\x0d\x0a$count=1\x0d\x0awhile($data=mysql_fetch_array($resultgroups))\x0d\x0a{\x0d\x0a$count+=1\x0d\x0a$l1="A"."$count"\x0d\x0a$l2="B"."$count"\x0d\x0a$l3="C"."$count"\x0d\x0a$l4="D"."$count"\x0d\x0a$l5="E"."$count"\x0d\x0a$objPHPExcel->setActiveSheetIndex(0)\x0d\x0a->setCellValue($l1, $data['id'])//这就是你要导出表的字段、与对应的名称\x0d\x0a->setCellValue($l2, $data['title'])\x0d\x0a->setCellValue($l3, $data['content'])\x0d\x0a->setCellValue($l4, $data['sn'])\x0d\x0a->setCellValue($l5, $data['num'])\x0d\x0a}\x0d\x0a}

php导出数据excel有专门的库,当导出少量数据的时候速度很快,但是当数据量大的时候就会存在服务器内存不够之类的。

所以在导出大量数据的时候就应该分页查询数据,避免服务器宕机。正好PHP提供了fputcsv函数可以将数据写入到csv文件中。

这样我们就可以使用PHP对数据进行分页查询,再写入到csv文件中。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11525154.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存