1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

时间:2022-12-09 02:08:42

相关推荐

【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

【PHP】【组件使用】【phpexcel】【phpexcel导入导出】

一、前提

PHP 7.3

tp3.2

tp5版本及以上的可能需要修改

二、phpexcel包引入

composer require phpoffice/phpexcel

三、复用代码

3.1、导入功能

/*** 数据导入功能* @param array $file 上传文件的相关信息($_FILES对应得)* @param int $headerNum 去除表头行数* @param array $keyArr 表头名集合 当表头和数据库不一致时,需要手动填写,比如都是中文时* @return array* @throws \PHPExcel_Exception* @throws \PHPExcel_Reader_Exception*/public function excelToArray($file, $keyArr = [], $headerNum = 1){vendor("PHPExcel.PHPExcel");$objPHPExcel = \PHPExcel_IOFactory::load($file['tmp_name']);//读取上传的文件$arrExcel = $objPHPExcel->getSheet()->toArray();//获取其中的数据if (empty($keyArr)) {$key = $arrExcel[0]; // 返回 excel 标题(用作数组的键)} else {$key = $keyArr;}array_splice($arrExcel, 0, $headerNum); // 单独移除两个表头// 整理数据(使其变成关联数组)foreach ($arrExcel as &$item) {$item = array_combine($key, $item);// 此处可以直接进行数据预处理}return $arrExcel;}补充:$file = [];foreach ($_FILES['file'] as $k => $v) {$file[$k] = $v[0];}

3.2、导出功能

/*** 数据导出功能* @param $cellType 主要用于id过长的数据进行特殊处理* @param array $data 数据* @param string $title 标题* @param int $downloadType 0:浏览器 1:下载缓存文件* @param string $formats 文件类型* @param string $writeType 写入类型* @throws \PHPExcel_Exception* @throws \PHPExcel_Reader_Exception* @throws \PHPExcel_Writer_Exception*/public function exportExcel($cellType = [], $data = [], $title = '', $downloadType = 0, $formats = 'xls', $writeType = 'Excel'){vendor("PHPExcel.PHPExcel");$objPHPExcel = new \PHPExcel();$xlsTitle = iconv('utf-8', 'gb2312', $title);//文件名称$fileName = $title . date('_YmdH');//文件名称$cellName = array_keys($data[0]);//处理表头foreach ($cellName as $k => $v) {$objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit(chr(65 + $k) . '1', $v);//设置表头数据}//处理数据foreach ($data as $row => $v) {foreach ($cellName as $col => $v1) {if (isset($cellType[$v1])) {//如果运营没太大要求,其实可以直接加个空字符串$objPHPExcel->getActiveSheet()->setCellValueExplicit(chr(65 + $col) . ($row + 2), $v[$v1], $cellType[$v1]);} else {$objPHPExcel->getActiveSheet()->setCellValue(chr(65 + $col) . ($row + 2), $v[$v1]);}}}//导出excelheader("pragma:public");header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.' . $formats . '"');header("Content-Disposition:attachment;filename=$fileName.$formats");//attachment新窗口打印inline本窗口打印$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, $writeType);if ($downloadType) {$fileName = $fileName . '.' . $formats;$file_path = RUNTIME_PATH . 'exportExcel/' . $fileName;$objWriter->save($file_path);} else {if ($formats == 'csv') {$objWriter->setUseBOM(true);}$objWriter->save('php://output');exit(0);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。