分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

PHPEXCEL导入导出

发布时间:2023-09-06 02:02责任编辑:彭小芳关键词:PHP
//导入 ???public function excelImport(){ ???????$mimes = array( ???????????‘application/vnd.ms-excel‘, ???????????‘application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘ ???????); ???????$exts = array( ???????????‘xls‘, ???????????‘xlsx‘ ???????); ???????$upload = new Upload(array( ???????????‘mimes‘ => $mimes, ???????????‘exts‘ => $exts, ???????????‘rootPath‘ => ‘./Public/‘, ???????????‘savePath‘ => ‘abcExcel/‘.date(‘Ym‘)."/", ???????????‘subName‘ ?=> ?array(‘date‘, ‘d‘), ???????)); ???????$info = $upload->upload($_FILES); ???????if(!$info) {// 上传错误提示错误信息 ???????????$error = $upload->getError(); ???????????echo "<script>alert(‘{$error}‘);window.history.go(-1)</script>"; ???????}else{// 上传成功 ???????????foreach ($info as $item) { ???????????????$filePath[] = __ROOT__."/Public/".$item[‘savepath‘].$item[‘savename‘]; ???????????} ???????????$ImgStr = implode("|", $filePath); ???????????$data = $this->excel(‘.‘.$ImgStr); ???????????if(!$data){ ???????????????$this->success(‘导入失败!‘,‘index‘); ???????????} ???????????$res = M(‘assets‘)->data($data)->addAll($data); ???????????if(!$res){ ???????????????$this->success(‘导入失败!‘,‘index‘); ???????????} ???????????$this->success(‘导入成功!‘,‘index‘); ???????} ???} ???public function excel($files){ ???????//导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入 ???????import("Common.Vendor.Excel.PHPExcel"); ???????//创建PHPExcel对象,注意,不能少了\ ???????$PHPExcel=new \PHPExcel(); ???????$name = ?substr(strrchr($files, ‘.‘), 1); ???????if ($name == ‘xls‘) { ???????????//如果excel文件后缀名为.xls,导入这个类 ???????????import("Common.Vendor.Excel.PHPExcel.Reader.Excel5"); ???????????$PHPReader=new \PHPExcel_Reader_Excel5(); ???????} ???????if ($name == ‘xlsx‘) { ???????????//如果excel文件后缀名为.xlsx,导入这下类 ???????????import("Common.Vendor.Excel.PHPExcel.Reader.Excel2007"); ???????????$PHPReader=new \PHPExcel_Reader_Excel2007(); ???????} ???????//载入文件 ???????$PHPExcel=$PHPReader->load($files); ???????$currentSheet=$PHPExcel->getSheet(0); ???????$allColumn=$currentSheet->getHighestColumn(); ???????$allRow=$currentSheet->getHighestRow(); ???????//循环读取数据 ???????for($currentRow=2;$currentRow<=$allRow;$currentRow++){ ???????????$arr[‘a‘] = $PHPExcel->getActiveSheet()->getCell(‘A‘.$currentRow)->getValue(); ???????????$arr[‘b‘] = $PHPExcel->getActiveSheet()->getCell(‘B‘.$currentRow)->getValue(); ???????????$arr[‘type‘] = $PHPExcel->getActiveSheet()->getCell(‘C‘.$currentRow)->getValue(); ???????????$arr[‘name‘] = $PHPExcel->getActiveSheet()->getCell(‘D‘.$currentRow)->getValue(); ???????????$arr[‘model‘] = $PHPExcel->getActiveSheet()->getCell(‘E‘.$currentRow)->getValue(); ???????????$arr[‘time‘] = gmdate("Y-m-d H:i:s",\PHPExcel_Shared_Date::ExcelToPHP($PHPExcel->getActiveSheet()->getCell(‘F‘.$currentRow)->getValue()));$arr[‘created_time‘] = date(‘Y-m-d H:i:s‘,time());; ???????????$data[] =$arr; ???????} ???????return $data; ???} ???//导出 ???public function excelExport(){ ???????$ids = I(‘param.ids‘); ???????if($ids){ ???????????$where[‘a.id‘] = [‘in‘,$ids]; ???????} ???????????????$data = M(‘abc‘)->where($where)->select(); ???????$title = array(‘ID‘,‘类别‘,‘名称‘,‘型号‘,‘供应商‘); ???????$this->dataExport($data,$title,‘这是表名‘.date("Y-m-d",time())); ???} ???/** ????* 数据导出 ????* @param string $fileName ?文件名 ????* @param array $headArr ???表头数据(一维) ????* @param array $data ??????列表数据(二维) ????* @return bool ????*/ ???public function dataExport($data=array(),$headArr=array(),$fileName="") { ???????import(‘Common.Vendor.Excel.PHPExcel‘); ???????import(‘Common.Vendor.Excel.PHPExcel.IOFactory‘); ???????import(‘Common.Vendor.Excel.PHPExcel.Writer.Excel5‘); ???????import(‘Common.Vendor.Excel.PHPExcel.Writer.Excel2007‘); ???????if (empty($headArr) && !is_array($headArr) && empty($data) && !is_array($data)) { ???????????return false; ???????} ???????$objPHPExcel = new \PHPExcel(); ???????//设置表头 ???????$tem_key = "A"; ???????foreach($headArr as $v){ ???????????if (strlen($tem_key) > 1) { ???????????????$arr_key = str_split($tem_key); ???????????????$colum = ‘‘; ???????????????foreach ($arr_key as $ke=>$va) { ???????????????????$colum .= chr(ord($va)); ???????????????} ???????????} else { ???????????????$key = ord($tem_key); ???????????????$colum = chr($key); ???????????} ???????????$objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.‘1‘, $v); ???????????$tem_key++; ???????} ???????$objActSheet = $objPHPExcel->getActiveSheet(); ???????$border_end = ‘A1‘; // 边框结束位置初始化 ???????// 写入内容 ???????$column = 2; ???????foreach($data as $key => $rows){ //获取一行数据 ???????????$tem_span = "A"; ???????????foreach($rows as $keyName=>$value){// 写入一行数据 ???????????????if (strlen($tem_span) > 1) { ???????????????????$arr_span = str_split($tem_span); ???????????????????$j = ‘‘; ???????????????????foreach ($arr_span as $ke=>$va) { ???????????????????????$j .= chr(ord($va)); ???????????????????} ???????????????} else { ???????????????????$span = ord($tem_span); ???????????????????$j = chr($span); ???????????????} ???????????????$objActSheet->setCellValue($j.$column, $value); ???????????????$border_end = $j.$column; ???????????????$tem_span++; ???????????} ???????????$column++; ???????} ???????$fileName = iconv("utf-8", "gb2312", $fileName); ???????//设置活动单指数到第一个表 ???????$objPHPExcel->setActiveSheetIndex(0); ???????ob_end_clean();//清除缓冲区,避免乱码 ???????header(‘Content-Type: application/vnd.ms-excel‘); ???????header("Content-Disposition: attachment;filename=$fileName.xls"); ???????header(‘Cache-Control: max-age=0‘); ???????$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘); ???????$objWriter->save(‘php://output‘); //文件通过浏览器下载 ???????exit; ???}

PHPEXCEL导入导出

原文地址:https://www.cnblogs.com/mthp/p/9244924.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved