線上書籍

Home

[1012]PHP進階開發及TadTools工具應用

一、 匯入Excel的表單 <form action='index.php' method='post' enctype='multipart/form-data'> <INPUT type='file' name='importfile'> <INPUT type='hidden' name='op' value='import_excel'> <INPUT type='submit' value='匯入'> </form> 二、 匯入Excel的方法 include_once '../class/PHPExcel/IOFactory.php'; $reader = PHPExcel_IOFactory::createReader('Excel5'); $PHPExcel = $reader->load( $_FILES['importfile']['tmp_name'] ); // 檔案名稱 $sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表(編號從 0 開始) $highestRow = $sheet->getHighestRow(); // 取得總列數 // 一次讀取一列 for ($row = 1; $row <= $highestRow; $row++) { $v=""; //讀取一列中的每一格 for ($col = 0; $col <= 8; $col++) { //格式檢查 if( PHPExcel_Shared_Date::isDateTime( $sheet->getCellByColumnAndRow($col , $row ) )){ $val = PHPExcel_Shared_Date::ExcelToPHPObject( $sheet->getCellByColumnAndRow( $col , $row )->getValue())->format('Y-m-d'); }else{ $val = $sheet->getCellByColumnAndRow($col, $row)->getCalculatedValue(); } if(!get_magic_quotes_runtime()) { $v[$col]=addSlashes($val); } } $sql = "insert into `".$xoopsDB->prefix("contact")."` (`gsn` , `name` , `tel` , `email` , `birthday` , `zip` , `county` , `city` , `addr`) values('{$v[0]}' , '{$v[1]}' , '{$v[2]}' , '{$v[3]}' , '{$v[4]}' , '{$v[5]}' , '{$v[6]}' , '{$v[7]}' , '{$v[8]}')"; $xoopsDB->queryF($sql); } 三、 Excel的對齊方向 $objActSheet->getStyle('A1:I1')->getAlignment() ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER) ->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER) ->setWrapText(true);

對齊的值有以下這些: HORIZONTAL_CENTER、 HORIZONTAL_CENTER_CONTINUOUS、 HORIZONTAL_GENERAL、 HORIZONTAL_JUSTIFY、 HORIZONTAL_LEFT、 HORIZONTAL_RIGHT、 VERTICAL_BOTTOM、 VERTICAL_CENTER、 VERTICAL_JUSTIFY、 VERTICAL_TOP

四、 Excel的邊框設定 $objBorder=$objActSheet->getDefaultStyle()->getBorders(); $objBorder->getBottom() ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN) ->getColor()->setRGB('000000');
  1. getLeft()、getRight()、getBottom() 一樣比照辦理
  2. 邊框的值有:BORDER_DASHDOT、 BORDER_DASHDOTDOT、 BORDER_DASHED、 BORDER_DOTTED、 BORDER_DOUBLE、 BORDER_HAIR、 BORDER_MEDIUM、 BORDER_MEDIUMDASHDOT、 BORDER_MEDIUMDASHDOTDOT、 BORDER_MEDIUMDASHED、 BORDER_NONE、 BORDER_SLANTDASHDOT、 BORDER_THICK、 BORDER_THIN
五、 把數字轉換為A、B、C欄位的方法: function num2alpha($n){ for($r = ""; $n >= 0; $n = intval($n / 26) - 1) $r = chr($n%26 + 0x41) . $r; return $r; } 六、 利用欄、列位置順序寫入內容: $objActSheet->setCellValueByColumnAndRow($第N欄, $第N列 ,$內容);