گرفتن خروجی و ورود اطلاعات به دیتابیس با اکسل ، یکی از روش های مدرنی است که اکثر سایت های امروزی به آن نیاز دارند چرا که ورود اطلاعات بصورت انفرادی دیگر از نظر زمانی مقرون به صرفه نیست. زبان PHP یکی از بهترین کتابخانه های موحود در این زمینه را دارد که نام آن PHPExcel می باشد و امروز می خواهیم با هم بیاموزیم که چطور می توانیم با آن کار کنیم.

 کتاب خانه آن را می توانید از لینک زیر دانلود کنید :

https://github.com/PHPOffice/PHPExcel

 فایل های اصلی این کتاب خانه درون فایل Classes قرار دارد.

 اولین کاری که نیاز است انجام دهیم این است که فایل اصلی این کتاب خانه را به برنامه اضافه کنیم؛ کد زیر این کار را انجام می دهد :

include_once ('SITE_PATH/Classes/PHPExcel/IOFactory.php');
/** PHPExcel_Writer_Excel2007 */
include_once ('SITE_PATH/Classes/PHPExcel/Writer/Excel2007.php');

 متغیر SITE_PATH مسیر روت سایت تان می باشد (لوکال یا سرور)

خروجی از اطلاعات

 ابتدا تهیه خروجی با فرمت xlxs را انجام می دهیم سپس ورود اطلاعات از اکسل

 به کد زیر دقت کنید :

/* کدهای مربوط به گرفتن اطلاعات از دیتابیس */
...

// For Example
$rows = array(
		'BMW' => array('بی ام دابیلو', '1940', '370'), 
		'AUDI' => array('آئودی', '1990', '420'), 
		'VOLVO' => array('ولوو', '2003', '320'), 
		'FORD' => array('فورد', '1975', '360'), 
		'BUGATTI' => array('بوگاتی', '1982', '440')
	);	

// Get Excel Object
$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->getActiveSheet();

// Right To Left For Persian Text
$sheet->setRightToLeft(true);

// Set Headers
$sheet->setCellValue('A1',"ردیف");
$sheet->setCellValue('B1',"نام خودرو");
$sheet->setCellValue('C1',"سال تولید");
$sheet->setCellValue('D1',"حداکثر سرعت");

// Set Values
$c = 2;
foreach ($rows as $item) {
	$sheet->setCellValue('A'.$c,$c-1);
	$sheet->setCellValue('B'.$c,$item[0]);
	$sheet->setCellValue('C'.$c,$item[1]);
	$sheet->setCellValue('D'.$c,$item[2]);
	$c++;
}

// Set Width Of Cell
$sheet->getColumnDimension('B')->setWidth('40');
$sheet->getColumnDimension('C')->setWidth('30');
$sheet->getColumnDimension('D')->setWidth('30');

// Save To Excel File
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$excellname = 'export.xlsx';
$objWriter->save($excellname);

// در مسیر فعلی یک فایل با نام export.xlsx ذخیره خواهد شد.

 نکته اول : متغیر $rows به عنوان آزمایشی نوشته شده است اما شما می توانید اطلاعات خود را از دیتابیس را هر کجای دیگر تهیه کنید و به متغیر $rows بدهید فقط توجه داشته باشید که نوع ترتیب اطلاعات شما بستگی شدیدی به پُر کردن سلول های اکسل دارد.

 نکته دوم : متغیر $c با عدد 2 شروع شده است چرا که در ردیف اول ، هدر یا سرتیتر وارد شده است.

 

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

 ورود اطلاعات کمی متفاوت از خروجی می باشد و نیازمند یک تابع برای ریختن اطلاعات درون یک متغیر می باشد که در این مثال ما تابع را آماده و نام آن را loadData قرار داده ایم به کد زیر توجه کنید :

public function loadData($file_path) {
	$objPHPExcel = PHPExcel_IOFactory::load($file_path);
	$objWorksheet = $objPHPExcel->getActiveSheet();
	$val = array();
	$ar = array();
	$i = 0;
	foreach ($objWorksheet->getRowIterator() as $row)  {			
		$cellIterator = $row->getCellIterator();
		$cellIterator->setIterateOnlyExistingCells(false);
		  $ar = NULL;
		foreach ($cellIterator as $cell)  {
			$ar[] = $cell->getValue();
		}
		$val[$i] = $ar;
		$i++;
	}
	return $val;
}// function

 تابع loadData را درون برنامه خود قرار دهید سپس در پارامتر ورودی آن مسیر فایل اکسل را بدهید تا در خروجی تابع تمام اطلاعات درون اکسل را در یک متغیر Array بریزد و تحویل شما دهد. به مثال زیر دقت کنید :

// Excel File Path
$excelfile = '/home/joominamarket/FolderName/report.xlsx';
$ReportRows = loadData($excelfile);

// Print Output
var_dump($ReportRows);

 خط آخر که var_dump کردیم صرفا بابت نمایش خروجی می باشد

 امیدواریم مفید واقع شده باشد