ThinkPHP导出Excel文件
2017-01-17 00:00
190 查看
PHP函数方法
调用:
---------------------------------------华丽的分割线-------------------------------------------
批量导入Excel:(thinkphp5)
PHP服务端:
函数方法:
//利用excel导出 function getExcel($fileName,$headArr,$data) { //判断数据是否是数组 vendor("excel.PHPExcel"); if (empty($data) || !is_array($data)) { die("data must be a array"); } //判断文件是否存在 if (empty($fileName)) { exit; } $date = time(); //时间 $fileName .= "_{$date}.xlsx"; //文件名 //创建新的PHPExcel对象 $objPHPExcel = new \PHPExcel(); $objProps = $objPHPExcel->getProperties(); //设置表头 $key = ord("A"); //返回ASCII值 foreach ($headArr as $v) { $colum = chr($key); //ASCII值返回字符 $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $key += 1; } /*--------------开始从数据库提取信息插入Excel表中------------------*/ $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); foreach ($data as $key => $rows) { //行写入 $span = ord("A"); foreach ($rows as $keyName => $value) {// 列写入 $j = chr($span); $objActSheet->setCellValue($j . $column, $value); $span++; } $column++; } /*--------------下面是设置其他信息------------------*/ $objPHPExcel->getActiveSheet()->setTitle('UserTable'); //重命名表 $objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(40); /*--------------下面是设置保存路径------------------*/ //通过PHPExcel_IOFactory的写函数将上面数据写出来 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); //将输出重定向到一个客户端web浏览器(Excel2007) header("Pragma: public"); header("Expires: 0"); header("Content-Type: application/vnd.ms-excel; charset==UTF-8"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=$fileName"); header("Content-Transfer-Encoding: binary "); //脚本方式运行,保存在当前目录 $objWriter->save('php://output'); exit; }
调用:
$fileName = "UserTable"; $headArr = array("序号","会员名","推荐人","姓名","身份证号","电话","银行开户行","银行账户姓名","银行卡","省份","城市","详细地址","添加时间"); $where["id"]=array("egt",$uid); $data = db("aduser")->where($where)->field("id,uname,tname,name,idcode,uphone,bankaccount,bankaccountname,banknum,sheng,city,address,addtime")->select(); //var_dump($data); //die; if($data){ foreach ($data as $k=>$v) { $data[$k]['idcode'] = ','.$v['idcode']; $data[$k]['banknum'] = ','.$v['banknum']; $data[$k]['addtime'] = date('Y-m-d H:i:s',$v['addtime']); } $info=json_decode(json_encode($data),true); } getExcel($fileName,$headArr,$info);
---------------------------------------华丽的分割线-------------------------------------------
批量导入Excel:(thinkphp5)
PHP服务端:
public function business_import(Request $request) { $file = $request->file('excel'); if($file){ $infos = $file->validate(array("ext"=>"xls,xlsx"))->move(ROOT_PATH.'uploads/excel'); if($infos){ $file_url ="./uploads/excel/".date("Ymd",time())."/".$infos->getFilename(); $data = import_excel($file_url); if ($data) { foreach ($data as $key => $val) { $import_data[] = array( "nickname" => $val["A"], "telephone"=>$val["B"], "wechart" =>$val["C"], "status"=>1, ); } } }else{ return $this->error("导入失败"); } } return $this->fetch(); }
函数方法:
/** * 导入excel文件 * @param string $file excel文件路径 * @return array excel文件内容数组 */ function import_excel($file){ // 判断文件是什么格式 $type = pathinfo($file); $type = strtolower($type["extension"]); $type=$type==='csv' ? $type : 'Excel5'; ini_set('max_execution_time', '0'); vendor('excel.PHPExcel'); // 判断使用哪种格式 $objReader = PHPExcel_IOFactory::createReader($type); $objPHPExcel = $objReader->load($file); $sheet = $objPHPExcel->getSheet(0); // 取得总行数 $highestRow = $sheet->getHighestRow(); // 取得总列数 $highestColumn = $sheet->getHighestColumn(); //循环读取excel文件,读取一条,插入一条 $data=array(); //从第一行开始读取数据 $keys=0; for($j=2;$j<=$highestRow;$j++){ //从A列读取数据 for($k='A';$k<=$highestColumn;$k++){ // 读取单元格 $data[$keys][$k]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); } $keys++; } return $data; }
相关文章推荐
- ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
- ThinkPHP3.2 + PHPExcel 进行execl文件导出操作
- ThinkPHP 3.2 PHPExcel 导入导出文件 第三方类库不能用问题解决
- ThinkPHP 3.2 + PHPExcel 导入导出文件 第三方类库不能用问题解决
- thinkPHP导出csv文件及用表格输出excel的方法
- ThinkPHP的使用(四)Excel文件导出
- thinkphp导出Excel文件的示例
- ThinkPHP3.2.3接入PHPExcel1.8.0控件导出Excel报表文件处理方法
- thinkPHP5框架导出Excel文件简单操作示例
- ThinkPHP使用PHPexcel导出excel文件(已封装的输出类)
- thinkPHP导出csv文件及用表格输出excel的方法
- thinkphp导出csv文件,用表格输出excel
- ThinkPHP用PHPExcle导出Excel文件
- 一个绝对很好的将DataTable中的数据导出到Excel文件中的类源代码
- datagrid数据导出到excel文件给客户端下载的几种方法(转)
- datagrid数据导出到excel文件给客户端下载的几种方法
- Asp.Net下导出/导入规则的Excel(.xls)文件
- datagrid数据导出到excel文件给客户端下载的几种方法
- 文件流形式导出为Excel的文件编码问题
- 导出到excel文件