php查询后并导出excel?在php编程中,如果要将查询结果导出到Excel,只需对页面的Context-Type做修改即可。例如:代码示例:header("Content-Type: application/vnd.ms-excel")如果希望能够提供那个打开/保存的对话框,Content-Disposition参数,那么,php查询后并导出excel?一起来了解一下吧。
php怎么导出文件?
在php编程中,如果要将查询结果导出到Excel,只需对页面的Context-Type做修改即可。
例如:
代码示例:
header("Content-Type: application/vnd.ms-excel")如果希望能够提供那个打开/保存的对话框,Content-Disposition参数,Content-Disposition参数本来是为了在客户端另存文件时提供一个建议的文件名,但是考虑到安全的原因,就从规范中去掉了这个参数。
Content-Disposition参数:
attachment --- 作为附件
inline --- 在线打开
具体使用:
代码示例:
header("Content-Disposition: inline; filename=文件名.mp3");
Header("Content-Disposition:attachment;filename=test.xls");其实IE是根据Content-Disposition中filename这个段中文件名的后缀来识别这个文件类型的,如果有很多种文件类型的时候,可以将Content-Type设置为二进制模式的:
Header("Content-type: application/octet-stream");例子:
代码示例:
$filename = './download/d.rar ';
$filesize = filesize($filename);
header( "Content-Type: application/force-download ");
header( "Content-Disposition: attachment; filename= ".basename($filename));
header( "Content-Length: ".$filesize);
$data = file_get_contents($filename);
echo $data;
?>以上代码实现打开页面后立即出现保存窗口,的文件为$filename。
要导出大量数据的Excel,可以使用以下步骤:侍前
安装PHPExcel库
PHPExcel是一个流行的用于生成Excel文档的老型清PHP库,可以通过Composer进行安装。在终端中执行以下命令:
bash
composer require phpoffice/phpexcel
编写PHP脚本
编写PHP脚本来生成Excel文档。以下是示例代码租仔:
php
require_once 'vendor/autoload.php'; // 导入PHPExcel库
// 创建PHPExcel对象
$objPHPExcel = new PHPExcel();
// 设置文档属性
$objPHPExcel->getProperties()
->setCreator('Your Name')
->setTitle('Title of the document')
->setSubject('Subject of the document')
->setDescription('Description of the document');
// 添加数据到Excel表格
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Column 1')
->setCellValue('B1', 'Column 2')
->setCellValue('C1', 'Column 3');
// 循环导入数据到Excel表格
for ($i = 2; $i <= 10000; $i++) {
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A' . $i, 'Value ' . $i)
->setCellValue('B' . $i, 'Value ' . ($i * 2))
->setCellValue('C' . $i, 'Value ' . ($i * 3));
}
// 输出Excel文件到浏览器
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="data.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
运行脚本
将脚本保存为php文件,并在终端中运行:
php your-script.php
这将生成一个名为“data.xlsx”的Excel文件,并将其到您的浏览器中。
PHP如何实现表格Excel的导出
首先PHPExcel包并将包引入到项目中;然后实例化PHPExcel对象;接着设置表格的列,以及列队属性;再将数据添加到表格中;最后将表格文件数据输出即可。
PHPExcel
是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格
ThinkPHP示例
public function exportExcel()
{
//先获取数据
$where['comid'] = session('uid');
$res = M('cheliang')->where($where)->select();
// var_dump($res);die;
//下面就是导出的步骤了
vendor('PHPExcel0.Classes.PHPExcel');
$objPHPExcel = new PHPExcel();
$objPHPExcel->createSheet(0);
$objPHPExcel->setActiveSheetIndex(0);
//只需要把你想要的字段改成你自己需要的就可以了!!!
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '考试人')
->setCellValue('B1', '车牌')
->setCellValue('C1', '考试时间')
->setCellValue('D1', '考试分数')
->setCellValue('E1', '签名');
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('C'巧首)->setWidth(50);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('D'孝早数)->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);//设置单元格宽度
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true); //第一行是否加粗
//$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16); //第一行字体大小
// 设置垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C1')->睁如getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
// 设置行高度
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //设置默认行高
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //第一行行高
//循环添加数据,注意的是下面的$kk+2,是因为$kk是下标,从0开始的,而第一行是你的标题,所以要从第二行开始才是你的数据
foreach ($data as $kk => $vv) {
$no = $kk + 2;
$currentSheet = $objPHPExcel->getActiveSheet();
$currentSheet->setCellValue('A' . $no, $vv['xueyuan']['name']);
$currentSheet->setCellValue('B' . $no, $vv['xueyuan']['chepaihao']);
$currentSheet->setCellValue('C' . $no, date('Y-m-d H:i:s',$vv['addtime']).'至'.date('Y-m-d H:i:s',$vv['sbttime']));
$currentSheet->setCellValue('D' . $no, $vv['score']);
//设置单元格高度,这个是重点哦
$currentSheet->getRowDimension($no) -> setRowHeight(40);
// 图片生成
$objDrawing[$kk] = new PHPExcel_Worksheet_Drawing();//这个就是生成图片的类(重点)
$objDrawing[$kk]->setPath('./'.$vv['qmimg']);/图片的路径
// 设置宽度高度
$objDrawing[$kk]->setHeight(85);//照片高度
$objDrawing[$kk]->setWidth(100); //照片宽度
/*设置图片要插入的单元格*/
$objDrawing[$kk]->setCoordinates('E'.$no);
// 图片偏移距离
$objDrawing[$kk]->setOffsetX(12);
$objDrawing[$kk]->setOffsetY(12);
$objDrawing[$kk]->setWorksheet($objPHPExcel->getActiveSheet());
}
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . '文件名称'. '.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}推荐教程:《PHP教程》
1.
这属于php的技术;
2.
php可以用毁拦行PHPExcel直接导出成excel文件;
代码如下:
require_once("../lib/excelcreator.class.php");
$myxls
=
new
ExcelCreator
("中文Excel");
$aTableHead
=
'衡基
ss:AutoFitHeight="0"> ss:Type="String">Name3 ss:Type="String">Surname3
$aTableBody
=
'
ss:AutoFitHeight="0"> ss:Type="String">Schwarz3 ss:Type="String">Oliver3
$aTableBottom
=
'
ss:AutoFitHeight="0"> ss:Type="String">123 ss:Type="String">Peter3
$workSheet
=
$myxls->createWorkSheet
(
"中文sheet1",
$aTableHead,
$aTableBody,
$aTableBottom
);
echo
$myxls->纤哗createExcel
(
$workSheet
);
php导出大量数据到Excel,可以通过生成多个Excel文件,然后压缩成压缩包雀闹迹解决。
方案是:假如我们数据库有10w条数据,每2000条数据生成一个Excel文件,这样每次只要从数据库里查询出2000条数据即可,一定要分页去查询。弯启
原因:主要是数据库性能和写文件性能。分页查询可以解决数据库压力的问题,生成多个文件可以解决单个文件太大,后期维护Excel文件的问题。
要注意的:
1.在导出逻辑文件开头,一定要声明set_time_limit(0),防止脚本超时;
2.每个文件生成后,适当的sleep一下,让程序休息一下下;
3.因为一次导出最后要将生成的多个Excel文件打包成一个压缩包,所以要删除掉顷并生成的Excel文件,节省服务器存储空间;
下面是我实际工作中,写的一个php导出大量数据到Excel的代码,你可以参考一下:
以上就是php查询后并导出excel的全部内容,php导出数据excel有专门的库,当导出少量数据的时候速度很快,但是当数据量大的时候就会存在服务器内存不够之类的。所以在导出大量数据的时候就应该分页查询数据,避免服务器宕机。