استفاده آسان از Google reCaptcha در کد phpجهت جلوگیری از اسپم
1395/08/08

وارد کردن اطلاعات از Excel به مای اس کیو ال با PHP
1395/07/24

بهترین زبان برنامه نویسی که میتوانید در 2015 بيامو
1394/01/02

وارد کردن اطلاعات از Excel به مای اس کیو ال با PHP


رضا نقی لو 1395/07/24

زمان های که ما درگیر کار با یک پروژه هستیم مواردی پیش میاد که می خواهیم از یک فایل خارجی مثل Excel اطلاعاتی رو به برنامه یا وب اپلیکیشن مون اضافه کنیم.در این اموزش ما با نحوه وارد کردن اطلاعات از Excel به MySQL با    PHP آشنا خواهیم شد

ساده ترین راه برای انتقال داده ها، ذخیره فایل اکسل با فرمت های xls یا xlsx در قالب فرمت csv توسط مایکروسافت اکسل و ایمپورت آن به Mysql بود. این فرمت خلاصه شده عبارت comma-separated values ( مقادیر جدا شده با کاما) می باشد که داده ها را بصورت جدولی در یک فایل متنی که می توان آن را با یک وبرایش گر متن باز کرد ذخیره می کند. در حقیقت شماره خطها به ردیف های جدول و داده های جدا شده با کاما به فیلدها اشاره دارند. اما تبدیل به csv توسط اکسل UTF-8 را به خوبی پشتیبانی نمی کند و داده های فارسی در تبدیل قابل استفاده نیستند و اینکه می بایست کاربر عملیات تبدیل را خودش انجام می داد و فایل csv را برای ایمپورت وارد می کرد در حالی که استفاده از فایل اکسل با فرمت معمولی xls یا xlsx ارجحیت داشت.

خوشبختانه کلاس PHPExcel به اندازه ایی خوب و کامل نوشته شده بود که دغدغه نوشتن کلاس جدید را از بین میبرد. این کلاس که بر پایه استانداردهای OpenXML مایکروسافت نوشته شده است قابلیت نوشتن و خواندن از فایل Excel را براحتی فراهم می کند. برای وارد کردن اطلاعات از فایل Excel به Mysql تکه کد زیر می توانیم استفاده کنیم:  


<?php
require_once 'PHPExcel.php';
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load('book1.xlsx');
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();

$skip_rows = 0;
$excell_array_data = array();
foreach($rowIterator as $row){
	$cellIterator = $row->getCellIterator();
	$cellIterator->setIterateOnlyExistingCells(false);
	if($skip_rows >= $row->getRowIndex ()) continue;
	$rowIndex = $row->getRowIndex ();
	$excell_array_data[$rowIndex] = array();

	foreach ($cellIterator as $cell) {
		$excell_array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
	}
}

$link = @mysql_connect('localhost', 'root', '123');
if ($link){
	$db_selected = mysql_select_db('alvanweb.com', $link);
	@mysql_set_charset('utf8',$link);

	//Create Database table with one Field
	$sql = "CREATE TABLE xlsx (
	rowID INT NOT NULL ,
	PRIMARY KEY (rowID)
	)";
	mysql_query($sql);

	//Create Others Field (A, B, C & ...)
	$columns_name = array();
	$columns_name = $excell_array_data[$skip_rows+1];
	foreach (array_keys($columns_name) as $fieldname ){
		$sql = "ALTER TABLE xlsx ADD $fieldname VARCHAR(1000)";
		mysql_query($sql);
	}

	//Insert Excel data to MySQL
	foreach( $excell_array_data as $k=>$v){
		$keys = join(array_keys($v), ',');
		$values = join($v, "','");
		$sql = "insert into xlsx (rowID, $keys) values ($k, '$values') " ;
		mysql_query($sql);
	}

} else {
	echo "Error in database connection.";
}
?>

مستندات PHPExcel کامل است و نیاز به توضیح متدها نیست. ورود اطلاعات توسط این کد در چهار مرحله انجام می شود: ۱- ریختن داده های فایل اکسل در آرایه $excell_array_data (خطوط ۹ تا ۱۹) ۲- اتصال به پایگاه داده و ایجاد جدول xlsx در دیتابیس و افزودن فیلد rowed به عنوان PRIMARY KEY (خطوط ۲۱ تا ۳۱) ۳- افزودن فیلدهای مربوط به نام ستون های فایل اکسل (A، B، C و …) به جدول xlsx (خطوط ۳۴ تا ۳۹) ۴- خواندن آرایه $excell_array_data و افزودن داده ها به جدول ( خطوط ۴۲ تا ۴۷)

توضیح اضافه اینکه $skip_rows برای رد کردن ردیف ها بالای فایل اکسل مقداردهی می شود. معمولاً اولین ردیف قبل از داده ها معرف نام ستون هایی است که گویااطلاعات نوع فیلد است (فرضاً سن، جنسیت و …) برای رد کردن این ردیف این متغیر برابر ۱ تنظیم می شود.

برای شروع یادگیری زبان php و آشنایی با Mysql میتوانید از این لینک استفاده کنید.

منبع:phpgang

 

فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد
درباره نویسنده
admin2
رضا نقی لو
androiddev160@gmail.com
نظرات شما
نظر جدید