1. 程式人生 > >PHPEXCEL導入導出

PHPEXCEL導入導出

mode OS return excel導入導出 文件名 IT exc 類庫 pex

//導入
    public function excelImport(){
        $mimes = array(
            ‘application/vnd.ms-excel‘,
            ‘application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘
        );
        $exts = array(
            ‘xls‘,
            ‘xlsx‘
        );
        $upload = new Upload(array(
            
‘mimes‘ => $mimes, ‘exts‘ => $exts, ‘rootPath‘ => ‘./Public/‘, ‘savePath‘ => ‘abcExcel/‘.date(‘Ym‘)."/", ‘subName‘ => array(‘date‘, ‘d‘), )); $info = $upload->upload($_FILES); if(!$info) {// 上傳錯誤提示錯誤信息 $error
= $upload->getError(); echo "<script>alert(‘{$error}‘);window.history.go(-1)</script>"; }else{// 上傳成功 foreach ($info as $item) { $filePath[] = __ROOT__."/Public/".$item[‘savepath‘].$item[‘savename‘]; } $ImgStr = implode
("|", $filePath); $data = $this->excel(‘.‘.$ImgStr); if(!$data){ $this->success(‘導入失敗!‘,‘index‘); } $res = M(‘assets‘)->data($data)->addAll($data); if(!$res){ $this->success(‘導入失敗!‘,‘index‘); } $this->success(‘導入成功!‘,‘index‘); } } public function excel($files){ //導入PHPExcel類庫,因為PHPExcel沒有用命名空間,只能inport導入 import("Common.Vendor.Excel.PHPExcel"); //創建PHPExcel對象,註意,不能少了\ $PHPExcel=new \PHPExcel(); $name = substr(strrchr($files, ‘.‘), 1); if ($name == ‘xls‘) { //如果excel文件後綴名為.xls,導入這個類 import("Common.Vendor.Excel.PHPExcel.Reader.Excel5"); $PHPReader=new \PHPExcel_Reader_Excel5(); } if ($name == ‘xlsx‘) { //如果excel文件後綴名為.xlsx,導入這下類 import("Common.Vendor.Excel.PHPExcel.Reader.Excel2007"); $PHPReader=new \PHPExcel_Reader_Excel2007(); } //載入文件 $PHPExcel=$PHPReader->load($files); $currentSheet=$PHPExcel->getSheet(0); $allColumn=$currentSheet->getHighestColumn(); $allRow=$currentSheet->getHighestRow(); //循環讀取數據 for($currentRow=2;$currentRow<=$allRow;$currentRow++){ $arr[‘a‘] = $PHPExcel->getActiveSheet()->getCell(‘A‘.$currentRow)->getValue(); $arr[‘b‘] = $PHPExcel->getActiveSheet()->getCell(‘B‘.$currentRow)->getValue(); $arr[‘type‘] = $PHPExcel->getActiveSheet()->getCell(‘C‘.$currentRow)->getValue(); $arr[‘name‘] = $PHPExcel->getActiveSheet()->getCell(‘D‘.$currentRow)->getValue(); $arr[‘model‘] = $PHPExcel->getActiveSheet()->getCell(‘E‘.$currentRow)->getValue(); $arr[‘time‘] = gmdate("Y-m-d H:i:s",\PHPExcel_Shared_Date::ExcelToPHP($PHPExcel->getActiveSheet()->getCell(‘F‘.$currentRow)->getValue()));$arr[‘created_time‘] = date(‘Y-m-d H:i:s‘,time());; $data[] =$arr; } return $data; } //導出 public function excelExport(){ $ids = I(‘param.ids‘); if($ids){ $where[‘a.id‘] = [‘in‘,$ids]; } $data = M(‘abc‘)->where($where)->select(); $title = array(‘ID‘,‘類別‘,‘名稱‘,‘型號‘,‘供應商‘); $this->dataExport($data,$title,‘這是表名‘.date("Y-m-d",time())); } /** * 數據導出 * @param string $fileName 文件名 * @param array $headArr 表頭數據(一維) * @param array $data 列表數據(二維) * @return bool */ public function dataExport($data=array(),$headArr=array(),$fileName="") { import(‘Common.Vendor.Excel.PHPExcel‘); import(‘Common.Vendor.Excel.PHPExcel.IOFactory‘); import(‘Common.Vendor.Excel.PHPExcel.Writer.Excel5‘); import(‘Common.Vendor.Excel.PHPExcel.Writer.Excel2007‘); if (empty($headArr) && !is_array($headArr) && empty($data) && !is_array($data)) { return false; } $objPHPExcel = new \PHPExcel(); //設置表頭 $tem_key = "A"; foreach($headArr as $v){ if (strlen($tem_key) > 1) { $arr_key = str_split($tem_key); $colum = ‘‘; foreach ($arr_key as $ke=>$va) { $colum .= chr(ord($va)); } } else { $key = ord($tem_key); $colum = chr($key); } $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.‘1‘, $v); $tem_key++; } $objActSheet = $objPHPExcel->getActiveSheet(); $border_end = ‘A1‘; // 邊框結束位置初始化 // 寫入內容 $column = 2; foreach($data as $key => $rows){ //獲取一行數據 $tem_span = "A"; foreach($rows as $keyName=>$value){// 寫入一行數據 if (strlen($tem_span) > 1) { $arr_span = str_split($tem_span); $j = ‘‘; foreach ($arr_span as $ke=>$va) { $j .= chr(ord($va)); } } else { $span = ord($tem_span); $j = chr($span); } $objActSheet->setCellValue($j.$column, $value); $border_end = $j.$column; $tem_span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); //設置活動單指數到第一個表 $objPHPExcel->setActiveSheetIndex(0); ob_end_clean();//清除緩沖區,避免亂碼 header(‘Content-Type: application/vnd.ms-excel‘); header("Content-Disposition: attachment;filename=$fileName.xls"); header(‘Cache-Control: max-age=0‘); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘); $objWriter->save(‘php://output‘); //文件通過瀏覽器下載 exit; }

PHPEXCEL導入導出