PHP导入Excel和导出Excel
生活随笔
收集整理的這篇文章主要介紹了
PHP导入Excel和导出Excel
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
導入Excel基本思路:
從百度下載一個PHPExcel類:https://github.com/PHPOffice/PHPExcel
用IOFactory.php類
//導入Excelpublic function importExcel(){require_once ROOT_PATH . 'PHPExcel/Classes/PHPExcel/IOFactory.php';//導入PHPExcel文件中的IOFactory.php類$file = request()->file('file');//獲取文件,file是請求的參數名$info = $file->move(ROOT_PATH . 'public' . DS . 'excel');//move將文件移動到項目文件的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); //加載文件內容 // echo "<pre>";$excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //轉換為數組格式array_shift($excel_array); //刪除第一個數組(標題);$arr = reset($excel_array); //獲取字段名unset($excel_array[0]); //刪除字段名,剩下的都是存儲到數據庫的數據了!!$data = [];for($i = 0;$i < count($excel_array);$i++){foreach ($arr as $key => $value){$data[$i][$value] = $excel_array[$i+1][$key];//使數組的鍵值就是數據表的字段名}}$res = GoodsModel::getInstance()->insertAll($data);var_dump($res);}}導出Excel:
方法一:用PHPExcel.php類
//導出Excelpublic function exportExcel2(){// 引入phpexcel核心類文件require_once ROOT_PATH . 'PHPExcel/Classes/PHPExcel.php';//實例化excel類$objPHPExcel = new \PHPExcel();// 操作第一個工作表$objPHPExcel->setActiveSheetIndex(0);// 設置sheet名$objPHPExcel->getActiveSheet()->setTitle('xx列表');// 設置表格寬度$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', '規格型號');$objPHPExcel->getActiveSheet()->setCellValue('C1', '包裝單位');$objPHPExcel->getActiveSheet()->setCellValue('D1', '規格單位');$objPHPExcel->getActiveSheet()->setCellValue('E1', '包裝規格');$objPHPExcel->getActiveSheet()->setCellValue('F1', '標準售價(元)');$field = ['name', 'spec_model', 'pack_unit', 'spec_unit','pack_spec', 'price'];//第二行列字段內容$res = GoodsModel::getInstance()->field($field)->where(['company_id'=>$this->company_id])->limit(2)//限制條數->select();// 數據起始行$row_num = 2;// 向每行單元格插入數據foreach($res as $value){// 設置所有垂直居中$objPHPExcel->getActiveSheet()->getStyle('A' . $row_num . ':' . 'J' . $row_num)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);// 設置價格為數字格式$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);// 設置單元格數值$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';//導出的文件名$xlsWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);header("Content-Type: application/force-download");//告訴瀏覽器強制下載header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition:inline;filename="' . $outputFileName . '"');//attachment作為附件下載,inline在線下載,filename設置文件名header("Content-Transfer-Encoding: binary");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");//設置瀏覽器響應緩存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格式文件,內容以表格形式展示?。這種方法可能會導致excel文件格式和擴展名不一致,文件無法用于導入,如果只是導出看看數據可用這種方法。推薦方法一
導出Excel參考文獻:https://blog.csdn.net/qq_41211900/article/details/81068901
總結
以上是生活随笔為你收集整理的PHP导入Excel和导出Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 志愿者证书有什么好处(志愿者证)
- 下一篇: 2022湖北高考本科分数线公布(本科多少