PHPExcel 导出 导入
时间:2024-4-30 11:08 作者:杨佳乐 分类: PHP
//导出代码 亲测可用 需先在vendor 下引入PHPExcel
public function order_dc(){
if(IS_POST){
//执行导出
$where="1=1";
//店铺
if(!empty(I('spid'))){
$where.=" and shopid='".I('spid')."'";
}
//处理时间
if(!empty(I('start_time'))){
$where.=" and createdat>".strtotime(I('start_time'));
}
if(!empty(I('end_time'))){
$where.=" and createdat<".strtotime(I('end_time'));
}
$list=M('wm_orderlist')->where($where)->select();
//excel导出
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.IOFactory");
vendor("PHPExcel.PHPExcel.Reader.Excel5");
vendor("PHPExcel.PHPExcel.Reader.Excel2007");
$objexcel=new \PHPExcel();
//设置excel文件名称 当前日期
$date = date("Y_m_d_h_i_s",time());
$fileName = "{$date}.xlsx";
//Excel文件的说明信息
$objexcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
$objexcel->setActiveSheetIndex(0)
->setCellValue('A1','test')
->setCellValue('B1','test');
//把表中数据导入Excel文件中,多数据循环设置值 如果是长数字在前面加个空格变换成字符串
foreach($list as $key=> $value) {
$key+=2;
$objexcel->setActiveSheetIndex(0)
->setCellValue('A'.$key,' '.$value['test'])
->setCellValue('B'.$key,$value['test']);
}
// 设置活动单指数到第一个表,所以Excel打开这是第一个表
$objexcel->setActiveSheetIndex(0);
// 将输出重定向到一个客户端web浏览器(Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename='.$fileName);
header('Cache-Control: max-age=0');
//要是输出为Excel2007,使用 Excel2007对应的类,生成的文件名为.xlsx.如果是Excel2005,使用Excel5,对应生成.xls文件
$io=new \PHPExcel_IOFactory();
$objWriter = $io::createWriter($objexcel, 'Excel2007');
//$objWriter = $io::createWriter($objexcel, 'Excel5');
//支持浏览器下载生成的文档
$objWriter->save('php://output');
}
}