Skip to main content

Read Excel File With PhpSpreadsheet

สวัสดีครับ ในวันนี้เราจะมาแนะนำการใช้งาน  PhpSpreadsheet  ซึ่งเป็น Library สำหรับ จัดการไฟล์ Excel ครับ
ซึ่งจะมาแทนที่ตัว PHPExcel ที่ยุติการพัฒนาไปแล้วครับ สำหรับ  PhpSpreadsheet จะรองรับ PHP Version 7.1 ขึ้นไปครับ

สามารถดูรายละเอียดของ PhpSpreadsheet   ได้ที่

https://phpspreadsheet.readthedocs.io/en/latest/

เริ่มต้นติดตั้ง

การติดตั้งเราจะติดตั้งผ่าน Composer ครับ ใครยังไม่มีต้องติดตั้งก่อนครับ

เมื่อติดตั้ง Composer เรียบร้อยแล้ว สามารถติดตั้ง phpspreadsheet ด้วยคำสั่ง

composer require phpoffice/phpspreadsheet

เมื่อติดตั้งเรียบร้อย จะมี Folder phpspreadsheet  ติดตั้งอยู่ที่ D:\xampp\htdocs\vendor\phpoffice\phpspreadsheet
(หมายเหตุ ตัวอย่างติดตั้ง โปรแกรมจำลอง Server ไว้ที่ Drive D ครับ)

เริ่มต้นใช้งาน  PhpSpreadsheet

1.สร้าง Folder excel ไว้ที่ D:/xampp/htdocs/excel

2.นำไฟล์ customer.xlsx ไปไว้ที่ Folder D:/xampp/htdocs/excel/customer.xlsx

สร้างไฟล์ index.php ไว้ที่ D:/xampp/htdocs/excel/index.php

<?php

require '../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$inputFileName = 'customer.xlsx';//ชื่อไฟล์ Excel ที่ต้องการอ่านข้อมูล

$spreadsheet = IOFactory::load($inputFileName);
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);

$i = 0;
$j = 1;
$data = [];
foreach($sheetData as $s => $k){
	foreach($k as $g){
		$i++;
		$data[$j][] = $g;
	}
	$j++;
}
?>

<table border='1'>
	<tr>
		<th>Customer Code</th>
		<th>Customer Name</th>
		<th>Customer Address</th>
	</tr>
	<?php
		$i = 1;
		foreach($data as $q){
			
			if($i > 1){
				$b = trim($q[0]);
				$c = trim($q[1]);
				$d = trim($q[2]);
				
				echo "<tr>";
				echo "<td>$b</td>";
				echo "<td>$c</td>";
				echo "<td>$d</td>";
				echo "</tr>";
			}
			$i++;
		}
	?>
</table>		

ทดสอบการทำงาน

ไปที่ http://localhost/excel/index.php

หากไม่มีอะไรผิดพลาดจะมีข้อมูลในไฟล์ customer.xlsx  แสดงอยู่ในหน้าจอดังภาพ

การ Import ข้อมูลจาก ไฟล์ Excel  ไปยัง ฐานข้อมูล MySQL

เมื่อเราสามารถอ่านข้อมูลจากไฟล์ Excel ได้แล้ว เราจะนำข้อมูลที่ได้ Import ไปไว้ที่ฐานข้อมูล MySQL กันต่อไปครับ

ขั้นแรกสร้าง ฐานข้อมูล demo และ ตาราง customer กันก่อนครับ

CREATE TABLE `customer` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `customer_code` varchar(255) DEFAULT NULL,
 `customer_name` varchar(255) DEFAULT NULL,
 `customer_address` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

แก้ไขไฟล์ index.php โดยเพิ่มส่วนของการ Insert Data ไปยัง MySQL ดังนี้

<?php

require '../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$inputFileName = 'customer.xlsx';//ชื่อไฟล์ Excel ที่ต้องการอ่านข้อมูล

$spreadsheet = IOFactory::load($inputFileName);
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);

$i = 0;
$j = 1;
$data = [];
foreach($sheetData as $s => $k){
	foreach($k as $g){
		$i++;
		$data[$j][] = $g;
	}
	$j++;
}

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "demo";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

//Insert Data To MySQL
$i = 1;
foreach($data as $q){

	if($i > 1){
		$customer_code = trim($q[0]);
		$customer_name = trim($q[1]);
		$customer_address = trim($q[2]);
		
		$sql = "INSERT INTO `customer`(`id`, `customer_code`, `customer_name`, `customer_address`) VALUES (NULL,'$customer_code','$customer_name','$customer_address')";
		if (mysqli_query($conn, $sql)) {

		} else {
			echo "Error: " . $sql . "<br>" . mysqli_error($conn);
		}	
	
	}
	$i++;
}

mysqli_close($conn);
?>

<table border='1'>
	<tr>
		<th>Customer Code</th>
		<th>Customer Name</th>
		<th>Customer Address</th>
	</tr>
	<?php
		$i = 1;
		foreach($data as $q){
			
			if($i > 1){
				$b = trim($q[0]);
				$c = trim($q[1]);
				$d = trim($q[2]);
				
				echo "<tr>";
				echo "<td>$b</td>";
				echo "<td>$c</td>";
				echo "<td>$d</td>";
				echo "</tr>";
			}
			$i++;
		}
	?>
</table>		

ผลการทำงาน  เมื่ออ่านไฟล์ เรียบร้อยแล้วจะมีการ Insert Data ไปยัง MySQL ดังภาพ

ขอขอบคุณข้อมูลจาก
https://phpspreadsheet.readthedocs.io/en/latest/

 


Deprecated: Function create_function() is deprecated in /home/service1/domains/monkeywebstudio.com/public_html/wp-content/plugins/simple-lightbox/controller.php on line 1642