ป้ายกำกับ: Read

อ่านข้อมูลจาก excelอ่านข้อมูลจาก excel

ตัวอย่างการอ่านข้อมูลใน excel โดยใช้ PHPExcel

<?php /* PHPExcel_IOFactory - Reader */
include 'PHPOffice/PHPExcel/Classes/PHPExcel/IOFactory.php'; $inputFileName = 'importsDatas.xlsx'; $inputFileType = PHPExcel_IOFactory::identify ($inputFileName) ; $objReader = PHPExcel_IOFactory::createReader ($inputFileType) ;
$objReader->setReadDataOnly (true) ; $objPHPExcel = $objReader->load ($inputFileName) ; /* select sheet */
$objWorksheet = $objPHPExcel->setActiveSheetIndex (0) ; /* range of datas */
$highestColumn = $objWorksheet->getHighestColumn () ; $highestColumnNumber = PHPExcel_Cell::columnIndexFromString ($highestColumn) ; $highestRow = $objWorksheet->getHighestRow () ; echo '<!doctype html>',
'<html>',
'<head>',
'<meta charset="utf-8">',
'<title>PHPExcel Reader</title>',
'<body>',
'<table border="1" width="100%"><caption>Highest Row = ', $highestRow, ' Highest Column = ', $highestColumn, ' (', $highestColumnNumber, ') </caption><tbody>'; for ($rowNo = 1; $rowNo <= $highestRow; $rowNo++) { echo '<tr>'; for ($colNo = 0; $colNo < $highestColumnNumber; $colNo++) { $colString = PHPExcel_Cell::stringFromColumnIndex ($colNo) ; $coordinate = $colString . $rowNo; $cell = $objWorksheet->getCell ($coordinate) ; $value = trim ($cell->getValue ()) ; echo '<td>', $value, ' <sup>', $coordinate, '</sup></td>'; } echo '</tr>';
}
echo '</tbody></table></body></html>';

พื้นฐานคือ

  1. บรรทัด 8 – 13 ให้ PHPExcel อ่านจากไฟล์ไหน เป็น excel version ไหน setReadDataOnly บอกว่าให้เปิดเพืออ่านข้อมูลอย่างเดียวนะ มันจะเร็วกว่าเพราะไม่ต้องเตรียมการเพื่อเขียนข้อมูลด้วย
  2. setActiveSheetIndex จะบอกว่าให้อ่าน sheet ไหน โดยเริ่มนับจาก 0 ไม่ใช่ 1
  3. บรรทัด 19 – 23 เป็นการหาขอบเขตที่มีการเขียนข้อมูลเอาไว้ เพราะว่าไม่ต้องการให้ loop ไปอ่านเรื่อย ๆ โดยที่ไม่มีข้อมูลอะไรเลย เปลืองทรัพยากร เสียเวลาไปเปล่า ๆ
  4. บรรทัด 33 – 35 เป็นการ loop อ่านข้อมูล มาสร้างเป็น coordinate อย่าง G1, G2, G3, …, G7 แล้วแต่ว่าจะเขียนเงื่อนไขให้เริ่มอ่านจากจุดไหน เพราะบางไฟล์แถวแรก ๆ จะเป็น header ไม่ใช่ข้อมูล สาเหตุที่ต้องใช้ columnIndexFromString ทั้ง ๆ ที่มี getHighestColumn แล้ว เพราะว่าต้องการลำดับ column เอาไป loop จะใช้ตัวอักษรไป loop ไม่ได้
  5. บรรทัด 41 ใช้ getCell ดึงข้อมูลออกมาใช้ทีละ coordinate

อ่านเพิ่มเติม Import วันที่โดย PHPExcel