Excel数据导入/导出基础代码(PHP)
1.Excel数据导入functionexcel_import($inputFileName){//引用PHPexcel 类require_onceenv(root_path).extend.DIRECTORY_SEPARATOR.phpoffice.DIRECTORY_SEPARATOR.phpexcel.DIRECTORY_SEPARATOR.Classes.DIRECTORY_SEPARATOR.PHPExcel.php;require_onceenv(root_path).extend.DIRECTORY_SEPARATOR.phpoffice.DIRECTORY_SEPARATOR.phpexcel.DIRECTORY_SEPARATOR.Classes.DIRECTORY_SEPARATOR.PHPExcel.DIRECTORY_SEPARATOR.IOFactory.php;date_default_timezone_set(PRC);$inputFileName./static/test.xlsx;// excel文件try{$inputFileType\PHPExcel_IOFactory::identify($inputFileName);$objReader\PHPExcel_IOFactory::createReader($inputFileType);$objPHPExcel$objReader-load($inputFileName);}catch(\Exception$e){returnlmsg(201,文件加载错误.$e-getMessage());}// 确定要读取的sheet$sheet$objPHPExcel-getSheet(0);$highestRow$sheet-getHighestRow();$highestColumn$sheet-getHighestColumn();// 获取一行的数据$list[];$head[];for($row1;$row$highestRow;$row){// 获取每一行的数据$rowData$sheet-rangeToArray(A.$row.:.$highestColumn.$row,null,true,false);$rowDataempty($rowData)?[]:$rowData[0];// 获取表头if(!$head)$head$rowData;// 跳过第一行if($row1)continue;$obj[];$obj[id];foreach($headas$k$v){// 跳过第一列// if ($k 0) continue;$obj[$v]$rowData[$k];}$list[]$obj;}}2.Excel数据导出/** * exportExcel * param (int) data [[keyval],[keyval]] 要导出的数据array * param (str) filename 要导出的excel文件名 * param (str) fileheader * param $tableHeader [[keyage, header_name年龄, header_font微软雅黑, header_font_size12, width 15]]; 设置的表头 * param (str) $sheetname 表格$sheetname * param (str) $SheetIndex 表格$SheetIndex * return (bool) */publicfunctionexportExcel($data,$filename,$tableHeader[],$sheetnameSheet1,$SheetIndex0){// 引入phpexcel核心文件不是tp你也可以用include‘文件路径’来引入require_onceenv(root_path).extend.DIRECTORY_SEPARATOR.phpoffice.DIRECTORY_SEPARATOR.phpexcel.DIRECTORY_SEPARATOR.Classes.DIRECTORY_SEPARATOR.PHPExcel.php;// 或者// import(Org.Util.PHPExcel);// import(Org.Util.PHPExcel.Reader.Excel2007);// import(Org.Util.PHPExcel.Writer.Excel2007);// import(Org.Util.PHPExcel.Writer.Excel5);// new一个PHPExcel类或者说创建一个exceltp中“\”不能掉$excelnew\PHPExcel();// 设置excel属性$objActSheet$excel-getActiveSheet();// 根据有生成的excel多少列$letter长度要大于等于这个值// array(A,B,C,D,E,F,F,G)$letter$this-getLetter(count($tableHeader));// 根据key 来设定类$tableHeaderKey[];foreach($tableHeaderas$k$v){$tableHeaderKey[$v[key]]$letter[$k];}// 设置当前的sheet$excel-setActiveSheetIndex($SheetIndex);//设置sheet的name$objActSheet-setTitle($sheetname);//设置表头for($i0;$icount($tableHeader);$i){// 单元宽度自适应,1.8.1版本phpexcel中文支持勉强可以自适应后单独设置宽度无效// $objActSheet-getColumnDimension($letter[$i])-setAutoSize(true);// 设置表头值这里的setCellValue第二个参数不能使用iconv否则excel中显示false// 表头名$header_name$tableHeader[$i][header_name];// 字体$header_font$tableHeader[$i][header_font];// 表格宽度$width$tableHeader[$i][width];// 字体大小$header_font_size$tableHeader[$i][header_font_size];$objActSheet-setCellValue($letter[$i]1,$header_name);// 设置表头字体样式$objActSheet-getStyle($letter[$i]1)-getFont()-setName($header_font);// 设置表头字体大小$objActSheet-getStyle($letter[$i]1)-getFont()-setSize($header_font_size);// 设置表头字体是否加粗$objActSheet-getStyle($letter[$i]1)-getFont()-setBold(true);// 设置表头文字垂直居中$objActSheet-getStyle($letter[$i]1)-getAlignment()-setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 设置文字上下居中$objActSheet-getStyle($letter[$i])-getAlignment()-setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);// 设置表头外的文字垂直居中$excel-setActiveSheetIndex(0)-getStyle($letter[$i])-getAlignment()-setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$objActSheet-getColumnDimension($letter[$i])-setWidth($width);}// 单独设置D列宽度为15// $objActSheet-getColumnDimension(D)-setWidth(15);// 这里$i初始值设置为2$j初始值设置为0自己体会原因for($i2;$icount($data)1;$i){$j0;foreach($data[$i-2]as$key$value){$objActSheet-setCellValue($tableHeaderKey[$key]$i,$value. );$j;}// 设置单元格高度暂时没有找到统一设置高度方法// $objActSheet-getRowDimension($i)-setRowHeight(80px);}// 设置浏览器窗口下载表格header(Content-Type: application/force-download);header(Content-Type: application/octet-stream);header(Content-Type: application/download);header(Content-Disposition:inline;filename.$filename.);// 生成excel文件$objWriter\PHPExcel_IOFactory::createWriter($excel,Excel5);// 下载文件在浏览器窗口$objWriter-save(php://output);exit;}/** * 获取letter列 * param (int) $length 长度 * return (bool) array(A,B,C....AA,AB); * url /index.php/** */publicfunctiongetLetter($length702){$length($length702)?702:$length;$arrarray(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z);for($i0;$i$length;$i){$letter[]($i25)?$arr[floor($i/26)-1].$arr[$i-(26)*floor($i/26)]:$arr[$i];}return$letter;}3.Excel数据导出----图片处理$objDrawingnew\PHPExcel_Worksheet_MemoryDrawing();$imgPath;//图片路径// 截取图片的格式用不同的方法$endsubstr($imgPath,-3);if($endjpg||$endpeg){$imgimagecreatefromjpeg($imgPath);}elseif($endpng){$imgimagecreatefrompng($imgPath);}elseif($endgif){$imgimagecreatefromgif($imgPath);}$objDrawing-setImageResource($img);//图片格式$objDrawing-setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法$objDrawing-setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);$objDrawing-setHeight(100);//照片高度$objDrawing-setWidth(100);//照片宽度$objDrawing-setCoordinates(F.$i);//图片要插入的单元格$objDrawing-setOffsetX(8);//图片X轴偏移$objDrawing-setOffsetY(8);//图片Y轴偏移$objDrawing-setWorksheet($objPHPExcel-getActiveSheet(0));//设置每一行高度// $objActSheet-getRowDimension($i)-setRowHeight(100); // 行高$objPHPExcel-getActiveSheet()-getRowDimension($num)-setRowHeight(160);