PHP导入Excel和导出Excel
生活随笔
收集整理的這篇文章主要介紹了
PHP导入Excel和导出Excel
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
導(dǎo)入Excel基本思路:
從百度下載一個(gè)PHPExcel類:https://github.com/PHPOffice/PHPExcel
用IOFactory.php類
//導(dǎo)入Excelpublic function importExcel(){require_once ROOT_PATH . 'PHPExcel/Classes/PHPExcel/IOFactory.php';//導(dǎo)入PHPExcel文件中的IOFactory.php類$file = request()->file('file');//獲取文件,file是請(qǐng)求的參數(shù)名$info = $file->move(ROOT_PATH . 'public' . DS . 'excel');//move將文件移動(dòng)到項(xiàng)目文件的xxxif($info){$excel_path = $info->getSaveName(); //獲取上傳文件名 // $excel_suffix = $info->getExtension(); //獲取上傳文件后綴$file_name = ROOT_PATH . 'public' . DS . 'excel' . DS . $excel_path; //上傳文件的地址$obj_PHPExcel = \PHPExcel_IOFactory::load($file_name); //加載文件內(nèi)容 // echo "<pre>";$excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //轉(zhuǎn)換為數(shù)組格式array_shift($excel_array); //刪除第一個(gè)數(shù)組(標(biāo)題);$arr = reset($excel_array); //獲取字段名unset($excel_array[0]); //刪除字段名,剩下的都是存儲(chǔ)到數(shù)據(jù)庫(kù)的數(shù)據(jù)了!!$data = [];for($i = 0;$i < count($excel_array);$i++){foreach ($arr as $key => $value){$data[$i][$value] = $excel_array[$i+1][$key];//使數(shù)組的鍵值就是數(shù)據(jù)表的字段名}}$res = GoodsModel::getInstance()->insertAll($data);var_dump($res);}}導(dǎo)出Excel:
方法一:用PHPExcel.php類
//導(dǎo)出Excelpublic function exportExcel2(){// 引入phpexcel核心類文件require_once ROOT_PATH . 'PHPExcel/Classes/PHPExcel.php';//實(shí)例化excel類$objPHPExcel = new \PHPExcel();// 操作第一個(gè)工作表$objPHPExcel->setActiveSheetIndex(0);// 設(shè)置sheet名$objPHPExcel->getActiveSheet()->setTitle('xx列表');// 設(shè)置表格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);// 列名表頭文字加粗$objPHPExcel->getActiveSheet()->getStyle('A1:J1')->getFont()->setBold(true);// 列表頭文字居中$objPHPExcel->getActiveSheet()->getStyle('A1:J1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 列名賦值$objPHPExcel->getActiveSheet()->setCellValue('A1', '貨品名稱');$objPHPExcel->getActiveSheet()->setCellValue('B1', '規(guī)格型號(hào)');$objPHPExcel->getActiveSheet()->setCellValue('C1', '包裝單位');$objPHPExcel->getActiveSheet()->setCellValue('D1', '規(guī)格單位');$objPHPExcel->getActiveSheet()->setCellValue('E1', '包裝規(guī)格');$objPHPExcel->getActiveSheet()->setCellValue('F1', '標(biāo)準(zhǔn)售價(jià)(元)');$field = ['name', 'spec_model', 'pack_unit', 'spec_unit','pack_spec', 'price'];//第二行列字段內(nèi)容$res = GoodsModel::getInstance()->field($field)->where(['company_id'=>$this->company_id])->limit(2)//限制條數(shù)->select();// 數(shù)據(jù)起始行$row_num = 2;// 向每行單元格插入數(shù)據(jù)foreach($res as $value){// 設(shè)置所有垂直居中$objPHPExcel->getActiveSheet()->getStyle('A' . $row_num . ':' . 'J' . $row_num)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);// 設(shè)置價(jià)格為數(shù)字格式$objPHPExcel->getActiveSheet()->getStyle('F' . $row_num)->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);// 居中$objPHPExcel->getActiveSheet()->getStyle('A' . $row_num . ':' . 'F' . $row_num)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 設(shè)置單元格數(shù)值$objPHPExcel->getActiveSheet()->setCellValue('A' . $row_num, $value['name']);$objPHPExcel->getActiveSheet()->setCellValue('B' . $row_num, $value['spec_model']);$objPHPExcel->getActiveSheet()->setCellValue('C' . $row_num, $value['pack_unit']);$objPHPExcel->getActiveSheet()->setCellValue('D' . $row_num, $value['spec_unit']);$objPHPExcel->getActiveSheet()->setCellValue('E' . $row_num, $value['pack_spec']);$objPHPExcel->getActiveSheet()->setCellValue('F' . $row_num, $value['price']); // $objPHPExcel->getActiveSheet()->setCellValue('F' . $row_num, $value['state'] ? '√' : '×'); // $objPHPExcel->getActiveSheet()->setCellValue('G' . $row_num, date('Y-m-d h:i:s',$value['statetime']));$row_num++;}$outputFileName = 'goods_' . time() . '.xls';//導(dǎo)出的文件名$xlsWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);header("Content-Type: application/force-download");//告訴瀏覽器強(qiáng)制下載header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition:inline;filename="' . $outputFileName . '"');//attachment作為附件下載,inline在線下載,filename設(shè)置文件名header("Content-Transfer-Encoding: binary");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");//設(shè)置瀏覽器響應(yīng)緩存header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Pragma: no-cache");$xlsWriter->save("php://output");echo file_get_contents($outputFileName);}方法二:直接用頭部信息輸出excel格式文件,內(nèi)容以表格形式展示?。這種方法可能會(huì)導(dǎo)致excel文件格式和擴(kuò)展名不一致,文件無(wú)法用于導(dǎo)入,如果只是導(dǎo)出看看數(shù)據(jù)可用這種方法。推薦方法一
導(dǎo)出Excel參考文獻(xiàn):https://blog.csdn.net/qq_41211900/article/details/81068901
總結(jié)
以上是生活随笔為你收集整理的PHP导入Excel和导出Excel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 志愿者证书有什么好处(志愿者证)
- 下一篇: 2022湖北高考本科分数线公布(本科多少