分享web开发知识

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

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

thinkphp5使用PHPExcel导出,导入Excel数据

发布时间:2023-09-06 01:33责任编辑:赖小花关键词:PHPthinkphp
 ???/** ?????* 地址:https://github.com/PHPOffice/PHPExcel ???下载PHPExcel,下载后只需要Classes目录下的文件即可。 ????* 数据导出 ?????* @param array $title ??标题行名称 ?????* @param array $data ??导出数据 ?????* @param string $fileName 文件名 ?????* @param string $savePath 保存路径 ?????* @param $type ??是否下载 ?false--保存 ??true--下载 ?????* @return string ??返回文件全路径 ?????*/ ????function exportExcel($title=array(), $data=array(), $fileName=‘‘,$sheet=‘‘, $savePath=‘./‘, $isDown=false){ ?????????Loader::import(‘phpexcel.PHPExcel‘); ???????Loader::import(‘phpexcel.PHPExcel.IOFactory‘); ???????$obj = new \PHPExcel(); ???????????????//横向单元格标识 ?????????$cellName = array(‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘, ‘AA‘, ‘AB‘, ‘AC‘, ‘AD‘, ‘AE‘, ‘AF‘, ‘AG‘, ‘AH‘, ‘AI‘, ‘AJ‘, ‘AK‘, ‘AL‘, ‘AM‘, ‘AN‘, ‘AO‘, ‘AP‘, ‘AQ‘, ‘AR‘, ‘AS‘, ‘AT‘, ‘AU‘, ‘AV‘, ‘AW‘, ‘AX‘, ‘AY‘, ‘AZ‘); ???????????????????$obj->getActiveSheet(0)->setTitle($sheet); ??//设置sheet名称 ?????????$_row = 1; ??//设置纵向单元格标识 ?????????if($title){ ?????????????$_cnt = count($title); ?????????????// $obj->getActiveSheet(0)->mergeCells(‘A‘.$_row.‘:‘.$cellName[$_cnt-1].$_row); ??//合并单元格 ?????????????// $obj->setActiveSheetIndex(0)->setCellValue(‘A‘.$_row, ‘数据导出:‘.date(‘Y-m-d H:i:s‘)); ?//设置合并后的单元格内容 ?????????????// $_row++; ?????????????$i = 0; ?????????????foreach($title AS $v){ ??//设置列标题 ?????????????????$obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v); ?????????????????$i++; ?????????????} ?????????????$_row++; ?????????} ???????????????//填写数据 ?????????if($data){ ?????????????$i = 0; ?????????????foreach($data AS $_v){ ?????????????????$j = 0; ?????????????????foreach($_v AS $_cell){ ?????????????????????$obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell); ?????????????????????$j++; ?????????????????} ?????????????????$i++; ?????????????} ?????????} ???????????????????//文件名处理 ?????????if(!$fileName){ ?????????????$fileName = uniqid(time(),true); ?????????} ???????????????$objWrite = \PHPExcel_IOFactory::createWriter($obj, ‘Excel2007‘); ?????????????????if($isDown){ ??//网页下载 ?????????????header(‘pragma:public‘); ?????????????header("Content-Disposition:attachment;filename=$fileName.xls"); ?????????????$objWrite->save(‘php://output‘);exit; ?????????} ???????????????$_fileName = iconv("utf-8", "gb2312", $fileName); ??//转码 ?????????$_savePath = $savePath.$_fileName.‘.xlsx‘; ?????????$objWrite->save($_savePath); ???????????????return $savePath.$fileName.‘.xlsx‘; ?????} ?

  

 ???????/** ?????* 地址:https://github.com/PHPOffice/PHPExcel ????* 数据导入 ?????* @param string $file excel文件 ?????* @param string $sheet ?????*/ ????function importExecl($file=‘‘, $sheet=0){ ?????????$file = iconv("utf-8", "gb2312", $file); ??//转码 ?????????if(empty($file) OR !file_exists($file)) { ?????????????die(‘file not exists!‘); ?????????} ?????????Loader::import(‘phpexcel.PHPExcel‘); ???????$objRead = new \PHPExcel_Reader_Excel2007(); ??//建立reader对象 ?????????var_dump($objRead); ???????die; ???????if(!$objRead->canRead($file)){ ?????????????$objRead = new \PHPExcel_Reader_Excel5(); ?????????????if(!$objRead->canRead($file)){ ?????????????????die(‘No Excel!‘); ?????????????} ?????????} ???????????????$cellName = array(‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘, ‘AA‘, ‘AB‘, ‘AC‘, ‘AD‘, ‘AE‘, ‘AF‘, ‘AG‘, ‘AH‘, ‘AI‘, ‘AJ‘, ‘AK‘, ‘AL‘, ‘AM‘, ‘AN‘, ‘AO‘, ‘AP‘, ‘AQ‘, ‘AR‘, ‘AS‘, ‘AT‘, ‘AU‘, ‘AV‘, ‘AW‘, ‘AX‘, ‘AY‘, ‘AZ‘); ???????????????$obj = $objRead->load($file); ?//建立excel对象 ?????????$currSheet = $obj->getSheet($sheet); ??//获取指定的sheet表 ?????????$columnH = $currSheet->getHighestColumn(); ??//取得最大的列号 ?????????$columnCnt = array_search($columnH, $cellName); ?????????$rowCnt = $currSheet->getHighestRow(); ??//获取总行数 ?????????$data = array(); ?????????for($_row=1; $_row<=$rowCnt; $_row++){ ?//读取内容 ?????????????for($_column=0; $_column<=$columnCnt; $_column++){ ?????????????????$cellId = $cellName[$_column].$_row; ?????????????????$cellValue = $currSheet->getCell($cellId)->getValue(); ??????????????????//$cellValue = $currSheet->getCell($cellId)->getCalculatedValue(); ?#获取公式计算的值 ?????????????????if($cellValue instanceof PHPExcel_RichText){ ??//富文本转换字符串 ?????????????????????$cellValue = $cellValue->__toString(); ?????????????????} ???????????????????????$data[$_row][$cellName[$_column]] = $cellValue; ?????????????} ?????????} ?????????return $data; ?????}

thinkphp5使用PHPExcel导出,导入Excel数据

原文地址:https://www.cnblogs.com/mengor/p/8136365.html

知识推荐

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