php多条数据生成文件夹 php多条数据生成文件夹

php怎么导出大量数据的Excel

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

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、洛隆网站维护、网站推广。

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

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

要注意的:

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

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

3. 因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉生成的Excel文件,节省服务器存储空间;

下面是我实际工作中,写的一个php导出大量数据到Excel的代码,你可以参考一下:

PHP中,从数据库取出几条数据,如何先生成xls文件,然后保存到指定文件夹下面?

$keynames=array(

'0'='订单号',

'1'='项目名称',

'2'='单价',

'3'='数量',

'4'='运费',

'5'='金额',

'6'='支付状态',

'7'='支付时间',

'8'='选项',

'9'='备注',

'10'='收件人',

'11'='手机',

'12'='送货地址',

'13'='物流',

'14'='物流单号'

);

down_excel($eorders, $keynames,$array_key, $name);

//生成简单excel。table生成。生成excel非标准。phpexcel生成的标准,可读写excel

function down_xls($data, $keynames, $name = 'dataxls') {

$xls [] = "htmlmeta http-equiv=content-type content=\"text/html; charset=UTF-8\"bodytable border='1'";

$xls [] = "trtdID/tdtd" . implode ( "/tdtd", array_values ( $keynames ) ) . '/td/tr';

foreach ( $data as $o ) {

$line = array (++ $index );

foreach ( $keynames as $k = $v ) {

$line [] = $o [$k];

}

$xls [] = 'trtd' . implode ( "/tdtd", $line ) . '/td/tr';

}

$xls [] = '/table/body/html';

$xls = join ( "\r\n", $xls );

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

die ( mb_convert_encoding ( $xls, 'UTF-8', 'UTF-8' ) );

}

//add by wqc excel

function down_excel($data, $keynames,$array_key, $name = 'dataxls') {

require_once(dirname(dirname(dirname(__FILE__))) . '/PHPExcel/PHPExcel.php');

require_once(dirname(dirname(dirname(__FILE__))) . '/PHPExcel/PHPExcel/IOFactory.php');

//实例化phpexcel

$objPHPExcel = new PHPExcel();

$objPHPExcel-getActiveSheet()-getDefaultColumnDimension()-setWidth(16);//设置单元格宽度

$objPHPExcel-getActiveSheet()-setTitle('kutuan');//设置当前工作表的名称

foreach($keynames as $k=$r){

$objPHPExcel-getActiveSheet()-getStyleByColumnAndRow($k, 1)-getFont()-setBold(true);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow($k, 1, $r);

}

foreach($data as $key=$value)

{

//$objPHPExcel-getSheet(1)-getProtection()-setSheet(true);

//$objPHPExcel-getSheet(1)-protectCells(0, ($key+2),$value['id']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(0, ($key+2),$value['id']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(1, ($key+2),$value['team_id']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(2, ($key+2),$value['price']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(3, ($key+2),$value['quantity']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(4,($key+2),$value['fare']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(5, ($key+2),$value['origin']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(6, ($key+2),$value['state']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(7, ($key+2),$value['pay_time']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(8, ($key+2),$value['condbuy']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(9, ($key+2),$value['remark']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(10, ($key+2),$value['realname']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(11, ($key+2),$value['mobile']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(12, ($key+2),$value['address']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(13, ($key+2),$value['express']);

$objPHPExcel-getActiveSheet()-setCellValueByColumnAndRow(14, ($key+2),$value['express_no']);

}

$objPHPExcel-setActiveSheetIndex(0);//设置打开excel时显示哪个工作表$name.

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

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

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

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

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

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

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Pragma: no-cache");

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

}

请问php如何自动创建文件夹和文件?

超简单,假设当前脚本文件在a/目录中,代码如下:

// 首先需要检测b目录是否存在

if (!is_dir('b/')) mkdir('b/'); // 如果不存在则创建

// 在检测b/目录中是否存在c.php文件

if (!file_exists('b/c.php')) file_put_contents('b/c.php', 'd'); // 如果c.php不存在则创建,当然还可以使用$file = fopen('b/c.php', 'a+')的方式创建然后用fwrite('d', $file)写入d

以上若还有任何问题,欢迎追问~


新闻标题:php多条数据生成文件夹 php多条数据生成文件夹
本文路径:http://ybzwz.com/article/dohoipc.html