做农家乐网站,山西seo博客,wordpress模块化布局,网上视频如何下载背景维修人员根据设备年度检修计划#xff0c;然后制订周检修计划(设备年度计划包含设备一年需要维护几次等信息#xff0c;根据年度计划分解到某一个周去执行)。在这个过程中#xff0c;大量的excel复制粘贴工作#xff0c;浪费人力并且容易出错。并且在审核过程中#x… 背景 维修人员根据设备年度检修计划然后制订周检修计划(设备年度计划包含设备一年需要维护几次等信息根据年度计划分解到某一个周去执行)。在这个过程中大量的excel复制粘贴工作浪费人力并且容易出错。并且在审核过程中一旦发现检修计划出现差错是很严重的问题。通过VBA可以实现自动生成检修计划但是我不会VBA也不想学就百度一下看看有没有其他方式于是有了本篇文章记录一下。实现方式实现关键库 PHPExcel-1.8PHPExcel-1.8的获取Github地址https://github.com/yuanhuihai/PHPExcel 官方已经不维护了最新版的是PhpSpreadsheet地址https://github.com/yuanhuihai/PhpSpreadsheet上传excel信息到数据库上传界面关键代码如下?php require_once ../../conf/class/OrcHelper.class.php;//数据库操作类$toolnew 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;//上传文件名。$resmove_uploaded_file($uploaded_file, $move_to_file);//$excelpathrepair.xls;$objPHPExcel $objReader-load($move_to_file);$sheet $objPHPExcel-getSheet(0);//$highestRow $sheet-getHighestRow(); //取得总行数$highestRow $_POST[zhonglei]1; //取得总行数$highestColumn $sheet-getHighestColumn(); //取得总列数for($j2;$j$highestRow;$j) //从第二行开始读取数据{ $str; for($kA;$k$highestColumn;$k) //从A列读取数据 { $str .$objPHPExcel-getActiveSheet()-getCell($k$j)-getValue().|*|;//读取单元格 } $strmb_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]}); $resoci_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);$toolnew OrcHelper();$conn$tool-conn;$week$_POST[week];//前端提交数据$area$_POST[area];//前端提交数据$sql SELECT * FROM INSPECTIONPLAN_VT where WEEK$weekand 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 ), ),);//获取数据$i0;while($rows oci_fetch_array($stmt,OCI_RETURN_NULLS)) { $start5$i; $sheettmp-setCellValue(A . $start, $i1); $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.($i4))-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($i0;$i// $colIndexA;// $start5$i;// for($j0;$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;filename01simple.xls);//header(Cache-Control:max-age0);////$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-age0);$objWriter PHPExcel_IOFactory:: createWriter($objPHPExcel, Excel2007);$objWriter-save( php://output);exit;?关于单元格的合并单元格的宽度、高度、字体大小等等大家可以自行百度获取方法。这里不再细说。我们看一下自动生成检修计划的效果