:::

15. 匯入Excel檔

一、 匯入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列 ,$內容);


 


:::

搜尋

QR Code 區塊

https%3A%2F%2Fwww.tad0616.net%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D26%26tbdsn%3D803

書籍目錄

展開 | 闔起

線上使用者

33人線上 (5人在瀏覽線上書籍)

會員: 0

訪客: 33

更多…