telnet到设备里 php_PHP自动生成设备周检修计划
生活随笔
收集整理的這篇文章主要介紹了
telnet到设备里 php_PHP自动生成设备周检修计划
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
????????維修人員根據設備年度檢修計劃,然后制訂周檢修計劃(設備年度計劃包含設備一年需要維護幾次等信息,根據年度計劃分解到某一個周去執行)。在這個過程中,大量的excel復制粘貼工作,浪費人力并且容易出錯。并且在審核過程中,一旦發現檢修計劃出現差錯,是很嚴重的問題。通過VBA可以實現自動生成檢修計劃,但是我不會VBA,也不想學,就百度一下看看有沒有其他方式,于是有了本篇文章記錄一下。
實現方式
實現關鍵庫??PHPExcel-1.8
PHPExcel-1.8的獲取
Github地址:https://github.com/yuanhuihai/PHPExcel?官方已經不維護了,最新版的是PhpSpreadsheet,地址https://github.com/yuanhuihai/PhpSpreadsheet
上傳excel信息到數據庫,
上傳界面
關鍵代碼如下
<?php require_once?'../../conf/class/OrcHelper.class.php';//數據庫操作類$tool=new OrcHelper();$conn=$tool->conn;//引用PHPExcel中的文件,根據層級目錄選擇../的個數require_once '../../conf/PHPExcel-1.8/Classes/PHPExcel.php';require_once '../../conf/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php';require_once '../../conf/PHPExcel-1.8/Classes/PHPExcel/Reader/Excel5.php';$objReader = PHPExcel_IOFactory::createReader('excel5'); //use Excel2007 for 2007 format$uploaded_file = $_FILES['myfile']['tmp_name'];$user_path ="E:/phpStudy/WWW/sc/website/beijian/repair_parts/uploadfile"; //上傳文件存放目錄$file_true_name = $_FILES['myfile']['name'];$move_to_file = $user_path . "/" . $file_true_name;//上傳文件名。$res=move_uploaded_file($uploaded_file, $move_to_file);//$excelpath='repair.xls';$objPHPExcel = $objReader->load($move_to_file);$sheet = $objPHPExcel->getSheet(0);//$highestRow = $sheet->getHighestRow(); //取得總行數$highestRow =$_POST['zhonglei']+1; //取得總行數$highestColumn = $sheet->getHighestColumn(); //取得總列數for($j=2;$j<=$highestRow;$j++) //從第二行開始讀取數據{ $str=""; for($k='A';$k<=$highestColumn;$k++) //從A列讀取數據 { $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'|*|';//讀取單元格 } $str=mb_convert_encoding($str,'UTF-8','auto');//根據自己編碼修改 $strs = explode("|*|",$str);//插入數據庫 $sql = "insert into INSPECTIONPLAN_VT VALUES ('{$strs[0]}','{$strs[1]}','{$strs[2]}','{$strs[3]}','{$strs[4]}','{$strs[5]}','','{$strs[6]}')"; $res=oci_parse($conn,$sql); if(oci_execute($res)) { echo ";????}}?>生成檢修計劃主要代碼
前端提交后,轉入后端代碼如下
<?php require_once '../../conf/class/OrcHelper.class.php';require_once '../../conf/PHPExcel-1.8/Classes/PHPExcel.php';require_once '../../conf/PHPExcel-1.8/Classes/PHPExcel/Writer/Excel2007.php';date_default_timezone_set("Asia/Shanghai");$tool=new OrcHelper();$conn=$tool->conn;$week=$_POST['week'];//前端提交數據$area=$_POST['area'];//前端提交數據$sql = "SELECT * FROM INSPECTIONPLAN_VT where WEEK='$week'and AREA='$area' ";$stmt=$tool->Execute_Sql($sql);//首先創建一個新的對象 PHPExcelobject$objPHPExcel = new PHPExcel();//設置文件的一些屬性,在xls文件——>屬性——>詳細信息里可以看到這些值,xml表格里是沒有這些值的$objPHPExcel ->getProperties() //獲得文件屬性對象,給下文提供設置資源 ->setCreator( "yuan") //設置文件的創建者 ->setLastModifiedBy( "yuan") //設置最后修改者 ->setTitle( "Office2007 XLSX Test Document" ) //設置標題 ->setSubject( "Office2007 XLSX Test Document" ) //設置主題 ->setDescription( "Test document for Office2007 XLSX, generated using PHP classes.") //設置備注 ->setKeywords( "office 2007 openxmlphp") //設置標記 ->setCategory( "Test resultfile"); //設置類別// 位置aaa *為下文代碼位置提供錨//給表格添加數據$objPHPExcel->setActiveSheetIndex(0); //設置第一個內置表(一個xls文件里可以有多個表)為活動的$sheettmp = $objPHPExcel->getActiveSheet();$sheettmp->mergeCells( 'A1:N1');//單元格合并$sheettmp->setCellValue( 'A1', '二涂維修班組_____年__月__日檢修計劃' ) ; //給表的單元格設置數據$sheettmp->getStyle('A1:N1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'A2:N2'); //A28:B28合并$sheettmp->setCellValue( 'A2', '編號:AA-CP2PA-Q-305-B01' ) ; //給表的單元格設置數據$sheettmp->getStyle('A2:N2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);$sheettmp->mergeCells( 'A3:A4');$sheettmp->setCellValue( 'A3', '序號' ) ;$sheettmp->getStyle('A3:A4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'B3:B4');$sheettmp->setCellValue( 'B3', '功能組' ) ;$sheettmp->getStyle('B3:B4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'C3:C4');$sheettmp->setCellValue( 'C3', '設備名稱' ) ;$sheettmp->getStyle('C3:C4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'D3:D4');$sheettmp->setCellValue( 'D3', '位置' ) ;$sheettmp->getStyle('D3:D4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'E3:F3');$sheettmp->setCellValue( 'E3', '計劃工時' ) ;$sheettmp->getStyle('E3:F3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->setCellValue( 'E4', '機械' ) ;$sheettmp->getStyle('E4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->setCellValue( 'F4', '電氣' ) ;$sheettmp->getStyle('F4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'G3:G4');$sheettmp->setCellValue( 'G3', '檢修內容' ) ;$sheettmp->getStyle('G3:G4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'H3:H4');$sheettmp->setCellValue( 'H3', '人數' ) ;$sheettmp->getStyle('H3:H4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'I3:I4');$sheettmp->setCellValue( 'I3', '負責人' ) ;$sheettmp->getStyle('I3:I4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'J3:J4');$sheettmp->setCellValue( 'J3', '檢查人' ) ;$sheettmp->getStyle('J3:J4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'K3:K4');$sheettmp->setCellValue( 'K3', '進度安排' ) ;$sheettmp->getStyle('K3:K4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'L3:L4');$sheettmp->setCellValue( 'L3', '完成情況' ) ;$sheettmp->getStyle('L3:L4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'M3:M4');$sheettmp->setCellValue( 'M3', '檢查人簽字' ) ;$sheettmp->getStyle('M3:M4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$sheettmp->mergeCells( 'N3:N4');$sheettmp->setCellValue( 'N3', '備注' ) ;$sheettmp->getStyle('N3:N4')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//設置表格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(4);#設置單元格寬度$objPHPExcel->getActiveSheet()->getStyle("A1")->getFont()->setBold(true) ->setSize(18);$objPHPExcel->getActiveSheet()->getStyle("A3:N4")->getFont()->setBold(true);$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(6);#設置單元格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(6);#設置單元格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(6);#設置單元格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(34);#設置單元格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(4);#設置單元格寬度$objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(4);#設置單元格寬度// 設置垂直居中$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);// 設置自動換行$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true);// 設置單元格邊框$styleThinBlackBorderOutline = array( 'borders' => array( 'allborders' => array( //設置全部邊框 'style' => PHPExcel_Style_Border::BORDER_THIN //粗的是thick ), ),);//獲取數據$i=0;while($rows = oci_fetch_array($stmt,OCI_RETURN_NULLS)) { $start=5+$i; $sheettmp->setCellValue('A' . $start, $i+1); $sheettmp->setCellValue('B' . $start, $rows[2]); $sheettmp->setCellValue('C'. $start, $rows[3]); $sheettmp->setCellValue('D'. $start, $rows[4]); $sheettmp->setCellValue('G' . $start, $rows[5]); $i++;}$objPHPExcel->getActiveSheet()->getStyle( 'A3:N'.($i+4))->applyFromArray($styleThinBlackBorderOutline);//$data= array(// array('0','1','2','0','1','2','0','1','2','0','1','2',),// array('0','1','2','0','1','2','0','1','2','0','1','2',),// array('0','1','2','0','1','2','0','1','2','0','1','2',)//// ); 引入數據////for($i=0;$i// $colIndex='A';// $start=5+$i;// for($j=0;$j// $sheettmp->setCellValue($colIndex . $start, $data[$i][$j]);// $colIndex++;// }////}// 刪除多余的最后一列//$objPHPExcel->getActiveSheet()->removeColumn(++$colIndex,1);//得到當前活動的表,注意下文教程中會經常用到$objActSheet$objActSheet =$objPHPExcel->getActiveSheet();// 位置bbb *為下文代碼位置提供錨//給當前活動的表設置名稱$objActSheet->setTitle($week.'周');//生成2003版本//header('Content-Type:application/vnd.ms-excel');//header('Content-Disposition:attachment;filename="01simple.xls"');//header('Cache-Control:max-age=0');////$objWriter =PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//$objWriter->save('php://output');//exit;//生成2007版本header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition:attachment;filename="檢修計劃.xlsx"');header('Cache-Control:max-age=0');$objWriter =PHPExcel_IOFactory:: createWriter($objPHPExcel, 'Excel2007');$objWriter->save( 'php://output');exit;?>關于單元格的合并,單元格的寬度、高度、字體大小等等,大家可以自行百度獲取方法。這里不再細說。
我們看一下自動生成檢修計劃的效果
總結
以上是生活随笔為你收集整理的telnet到设备里 php_PHP自动生成设备周检修计划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 生命周期_Android
- 下一篇: vb.net 设置打印纸张与页边距_装订