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 [] = "<html><meta http-equiv=content-type content=\"text/html; charset=UTF-8\"><body><table border='1'>";
$xls [] = "<tr><td>ID</td><td>" . implode ( "</td><td>", array_values ( $keynames ) ) . '</td></tr>';
foreach ( $data as $o ) {
$line = array (++ $index );
foreach ( $keynames as $k => $v ) {
$line [] = $o [$k];
}
$xls [] = '<tr><td>' . implode ( "</td><td>", $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');
}追问

大哥你搞过了么?这方法能行?

追答

源代码都给你了,还不行 ?

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-24
你去下载个phpexcel 操作包下来就好了,里面写好了很多方法 ,如果网上找不到,。贴个邮箱给我我发给你追问

那个方法我看过,但是就是不知道怎么做?

追答

里面不是都有方法吗?你去看看文件里的具体方法,应该有样例的吧

php怎么导出大量数据的Excel
php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包解决。方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询。原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题, 生成多个文件可以解...

php怎么导出大量数据的Excel
1、下载phpMyAdmin v4.6.2软件后解压放在网站根目录 2、用root用户和密码登入phpMyAdmin,在左边栏点击要导出的数据库,然后点击要导出的数据表,最后点击导出如图所示。3、进入导出页面后如图按图中红色标注的操作 4、另外还要注意选择的是要保存的文件的字符集:如图所示才能保证保存出来的文件不会出现乱...

php怎么导出大量数据的Excel
1、使用phpstudy搭建一个测试平台,直接访问数据库。2、下载的phpcms安装包拷贝到IIS目录,开通访问,即可搭建成功。3、登录网站后台,系统权限,文件目录以及数据库等功能,进行管理。4、在phpcms后台,扩展,数据库工具,数据库导出,程序池选择phpcmsv9,开始备份数据。5、打开IIS网站目录,在D:\\wwwroot...

...PHP 从MYsql 中查询数据并导出成cvs 或者xls 怎么实现。如果方便的话...
数据以,分开 行用\\n 存为.csv就行了 生成xls的话稍微复杂一点儿,下面是一个生成xls的类,你可以按照你的需要修改调用一下。=== 用PHP生成xls,csv格式文件的类 2008年09月23日 星期二 上午 09:56 fileOperation.php class fileOperation {\/\/基类 var $fileName='test';var $extendName='cs...

php语言中将一个数据库中的几条数据读取出来存入新的数据库
思路:先读出来再写进去 具体的话,看你使用什么操作数据库,php自带的有PDO,像thinkphp之类的框架有自己实现的查询构造器操作数据库

php连接了数据库 从数据库中提取一系列的数据 怎么样在网页中能自动形成...
以下示例读取数据库,并以表格显示:<?php header('Content-type:text\/html;charset=utf-8');db = new mysqli('localhost','root','root','books');rows = $db->query('SELECT * FROM customers');echo '姓名年龄';while($row = $rows->fetch_assoc()){ echo ''.$row['name'].''...

php 从数据库里面取出数据 生成一个 html表格 有多少数据生成多少 怎么...
1首先你连接数据库,2然后查询数据库里面所有的数据,3查询出来的数据放在一个里面 例如:<?php mysql_connect("localhost","root","密码","数据库名称");_sql="select * from 表名";mysql_query("set names utf8");\/\/编码设置为utf8 query=mysql_query($_sql);echo "";while($row=mysql...

PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组
首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组 json_encode() 函数的功能是将数值转换成json数据存储格式。例如:<?php \/\/定义一个数组,用于保存读取到的数据 array = array();query = mysql_query("select * from table");\/\/遍历数据表 while($rows...

php如何在一个页面从数据库返回数据到原表单的文本框里
一般这个页面要有get传值,后台只有接收到这个get值才能判断到底取哪条数据放到文本框中。一般根据id,从数据库选出数据,最后再放到页面上就行。其实就是一般理解的 “编辑”,对原有数据的修改。

PhpOffice\/PhpSpreadsheet读取和写入Excel
思路:使用PhpSpreadsheet读取Excel表格中的有用信息,然后组装成sql语句,最后批量插入到MySQL表中。require'vendor\/autoload.php';include('conn.php');\/\/连接数据库$reader=\\PhpOffice\\PhpSpreadsheet\\IOFactory::createReader('Xlsx');$reader->setReadDataOnly(TRUE);$spreadsheet=$reader->load('students.xlsx');\/...

相似回答