日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP导入Excel和导出Excel

發布時間:2024/9/19 php 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP导入Excel和导出Excel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導入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文件格式和擴展名不一致,文件無法用于導入,如果只是導出看看數據可用這種方法。推薦方法一

  • 把數據從數據庫中查詢出來?
  • 把查詢出來的數據拼接到table標簽中
  • 調用設置好的header(頭域)函數
  • //導出Excelpublic function exportExcel($action,$id = []){switch ($action){case 'HP':$comment = ['貨品名稱','規格型號','包裝單位','規格單位','包裝規格','標準售價(元)'];//第一行標題內容$field = ['name', 'spec_model', 'pack_unit', 'spec_unit','pack_spec', 'price'];//第二行列字段內容if($id){//查詢指定的幾條數據$res = GoodsModel::getInstance()->field($field)->where(['company_id'=>$this->company_id,'id'=>['in',$id]])->select();}else{//查詢所有數據$res = GoodsModel::getInstance()->field($field)->where(['company_id'=>$this->company_id]) // ->limit(2)//限制條數->select();}break;default:$this->displayByError('行動有誤,撤退!!');}$strTable ='<table width="500" border="1">';$strTable .= '<tr>';//第一行的標題foreach ($comment as $key => $value){$strTable .= '<td style="text-align:left;font-size:16px;" width="*">'.$value.'</td>'."\r\n";}$strTable .= '</tr>';//第二行的列字段$strTable .= '<tr>';foreach ($field as $key => $value){$strTable .= '<td style="text-align:left;font-size:14px;" width="*">'.$value.'</td>'."\r\n";}$strTable .= '</tr>';//第三行開始是導入數據庫的數據$strTable .= '<tr>';for ($i = 0;$i < count($res);$i++){for ($j = 0; $j < count($field);$j++){$strTable .= '<td style="text-align:left;font-size:12px;" rowspan="*">'.$res[$i][$field[$j]].'</td>'."\r\n";}$strTable .= '</tr>';}$strTable .='</table>';unset($res);$this->downloadExcel($strTable,'GoodsExcel');exit();}/*** 導出excel需要設置的header* @param $strTable /表格內容* @param $filename /文件名*/function downloadExcel($strTable,$filename){header("Content-type: application/vnd.ms-excel");//將查詢結果導出到Excelheader("Content-Type: application/force-download");//告訴瀏覽器強制下載header("Content-Disposition: attachment; filename=".$filename."_".date('Y-m-d').".xls");//attachment作為附件下載,inline在線下載,filename設置文件名header('Expires:0');//瀏覽器不會響應緩存header('Pragma:public');//Public指示響應可被任何緩存區緩存。echo '<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$strTable.'</html>';}

    導出Excel參考文獻:https://blog.csdn.net/qq_41211900/article/details/81068901

    總結

    以上是生活随笔為你收集整理的PHP导入Excel和导出Excel的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。