//导出代码 亲测可用 需先在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'); } }
导入代码 (未实际测试--- 转自网络)
2.把excel文件中内容读出,存入数据库 <?php /** 引入需要的类库 tp 可以使用 vendor */ require_once 'Classes\phpexcel.php'; require_once 'Classes\PHPExcel\IOFactory.php'; require_once 'Classes\PHPExcel\Reader\Excel5.php'; //数据库连接 $link = mysqli_connect('localhost','root','','test'); if(!$link){ echo "数据库连接失败"; exit; } //读excel表中内容生成对应数组 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objPHPExcel = $objReader->load('1.xlsx'); //读取csv文档内容 // $objReader = new PHPExcel_Reader_CSV(); // $objPHPExcel = $objReader->load('D.csv'); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 //获取文档中的值,存入数组中 $arr_result=array(); for($j=1;$j<=$highestRow;$j++) { for($k='A';$k<= $highestColumn;$k++) { //读取单元格 array_push($arr_result,($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue())); } } //数组转换成字符串,方便直接插入数据库中 $str = ''; foreach($arr_result as $item){ $strs.=$item.','; } for($j=2;$j<=$highestRow;$j++) { $a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//获取A列的值 $b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//获取B列的值 $c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue(); $d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue(); // $e = $objPHPExcel->getActiveSheet()->getCell("E".$j)->getValue(); // $f = $objPHPExcel->getActiveSheet()->getCell("F".$j)->getValue(); $sql = "INSERT INTO `test`(`Id`, `price`, `stock`, `num`) VALUES ('".$a."','".$b."','".$c."','".$d."')"; // mysqli_query($link,$sql); // mysqli_query($link,'set names utf-8'); if(mysqli_query($link,$sql)){ echo 1; } else{ echo "导入数据失败"; echo mysqli_errno($link); } }
下一篇: 程序员如何成为编程高手,并以此创业...