本文目录一览:

php怎么导出大量数据的Excel

php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决。

方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询。

原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题, 生成多个文件可以解决单个文件太大,后期维护Excel文件的问题。

要注意的:

1. 在导出逻辑文件开头,一定要声明 set_time_limit(0) ,防止脚本超时;

2. 每个文件生成后,适当的sleep一下,让程序休息一下下;

3. 因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉生成的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 ($numrows0)/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 把数据导出到excel表格有多种方法,比如使用 phpExcel 等,以下代码是直接通过 header 生成 excel 文件的代码示例:

?php

 header("Content-type:application/vnd.ms-excel");

 header("Content-Disposition:filename=xls_region.xls");

 $cfg_dbhost = 'localhost';

 $cfg_dbname = 'testdb';

 $cfg_dbuser = 'root';

 $cfg_dbpwd = 'root';

 $cfg_db_language = 'utf8';

 // END 配置

 //链接数据库

 $link = mysql_connect($cfg_dbhost,$cfg_dbuser,$cfg_dbpwd);

 mysql_select_db($cfg_dbname);

 //选择编码

 mysql_query("set names ".$cfg_db_language);

 //users表

 $sql = "desc users";

 $res = mysql_query($sql);

 echo "tabletr";

 //导出表头(也就是表中拥有的字段)

 while($row = mysql_fetch_array($res)){

  $t_field[] = $row['Field']; //Field中的F要大写,否则没有结果

  echo "th".$row['Field']."/th";

 }

 echo "/tr";

 //导出100条数据

 $sql = "select * from users limit 100";

 $res = mysql_query($sql);

 while($row = mysql_fetch_array($res)){

  echo "tr";

  foreach($t_field as $f_key){

   echo "td".$row[$f_key]."/td";

  }

  echo "/tr";

 }

 echo "/table";

?

php生成excel完整实例代码

下载phpexcel类库 代码如下:

?php

require_once('PHPExcel.php');

require_once('PHPExcel/IOFactory.php');

$objPHPExcel=new PHPExcel();

$iofactory=new IOFactory();

//获得数据 ---一般是从数据库中获得数据

$data=array(

0=array('id'=2013,'name'='张某某','age'=21),

1=array('id'=201,'name'='EVA','age'=21)

);

//设置excel列名

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('A1','编号');

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('B1','姓名');

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('C1','年龄');

//把数据循环写入excel中

foreach($data as $key = $value){

$key+=2;

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('A'.$key,$value['id']);

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('B'.$key,$value['name']);

$objPHPExcel-setActiveSheetIndex(0)-setCellValue('C'.$key,$value['age']);

}

//excel保存在根目录下 如要导出文件,以下改为注释代码

$objPHPExcel-getActiveSheet() - setTitle('SetExcelName');

$objPHPExcel- setActiveSheetIndex(0);

$objWriter = $iofactory - createWriter($objPHPExcel, 'Excel2007');

$objWriter - save('SetExcelName.xlsx');

//导出代码

// $objPHPExcel-getActiveSheet() - setTitle('SetExcelName');

// $objPHPExcel- setActiveSheetIndex(0);

// $objWriter = $iofactory - createWriter($objPHPExcel, 'Excel2007');

// $filename = 'SetExcelName.xlsx';

// header('Content-Type: application/vnd.ms-excel');

// header('Content-Type: application/octet-stream');

// header('Content-Disposition: attachment; filename="' . $filename . '"');

// header('Cache-Control: max-age=0');

// $objWriter - save('php://output');

?