<?php
	set_time_limit(0);
	date_default_timezone_set("Europe/Moscow");
	require_once 'php/Classes/PHPExcel.php';
	require_once 'php/Classes/PHPExcel/IOFactory.php';
	
	
	if(isset($_POST['upload'])){
		//Список разрешенных файлов
		$whitelist = array(".csv");         
		$data = array();
		$error = true;
		
		//Проверяем разрешение файла
		foreach  ($whitelist as  $item) {
			if(preg_match("/$item\$/i",$_FILES['userfile']['name'])) $error = false;
		}
			//если нет ошибок, грузим файл
		if(!$error){
				  
			
			$uploadedFile =  "csv/".$_FILES['userfile']['name'];
					
			if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
			
				if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadedFile)){
			
					$data = $_FILES['userfile'];
					$flag = 1;
					//echo "Файл успешно загружен! ".$data['name'];
				}
				else {	
					//echo "Во время загрузки файла произошла ошибка";
				}
			}
			else {	
				//echo "Файл не загружен ".$_FILES['userfile']['tmp_name'];
			}
		}
		else{
			
			//echo 'Вы загружаете запрещенный тип файла';
		}
	}
	
	
	
	
	
	$objPHPExcel = PHPExcel_IOFactory::load("Книга1.xlsx");
	$objPHPExcel->setActiveSheetIndex(0);
	$objPHPExcel->getDefaultStyle()->getFont()->setName('Times New Roman');
	$objPHPExcel->getDefaultStyle()->getFont()->setSize(12);
	$style = array('borders' => array(
								'bottom'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN),
								'right'		=> array('style' => PHPExcel_Style_Border::BORDER_THIN),
								'top'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN),
								'left'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN)
							)
				  );
	$csvname = $data['name'];
	$f = fopen("csv/".$csvname, "r");
	$i = 0;
	$bank = 0;
	$data = fgetcsv($f, 1000, ';');
	$title = "Каталог координат характерных точек ";
	if($data[0] == 1){
		$title .= "водоохранной зоны ";
	}
	if($data[0] == 2){
		$title .= "прибрежной защитной полосы ";
	}
	if($data[0] == 3){
		$title .= "береговой полосы ";
	}
	$object = $csvname;
	$object = explode("V", $object);
	$object[1] = str_replace(".csv", "", $object[1]);
	$title .= $object[1];
	
	$objPHPExcel->getActiveSheet()->setCellValue('A1', iconv("Windows-1251", "UTF-8", $title));
	
	while($data = fgetcsv($f, 1000, ';')){
		$i++;
		if($bank == 0 && $data[3] == 1){
			$bank = 1;
			$objPHPExcel->getActiveSheet()->mergeCells('A'.(8 + $i).':E'.(8 + $i));
			$objPHPExcel->getActiveSheet()->setCellValue('A'.(8 + $i), iconv("Windows-1251", "UTF-8", "Внешний замкнутый контур"));
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i).':E'.(8 + $i))->applyFromArray($style);
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->getFont()->setBold(true);
			$i++;
		}
		if($bank != $data[3] && $data[3] > 1){
			$bank = $data[3];
			$objPHPExcel->getActiveSheet()->mergeCells('A'.(8 + $i).':E'.(8 + $i));
			$objPHPExcel->getActiveSheet()->setCellValue('A'.(8 + $i), iconv("Windows-1251", "UTF-8", "Внутренний замкнутый контур №".($data[3] - 1)));
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i).':E'.(8 + $i))->applyFromArray($style);
			$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->getFont()->setBold(true);
			$i++;
		}
		$objPHPExcel->getActiveSheet()->setCellValue('A'.(8 + $i), iconv("Windows-1251", "UTF-8", $data[0]));
		$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->applyFromArray($style);
		$objPHPExcel->getActiveSheet()->getStyle('A'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$objPHPExcel->getActiveSheet()->setCellValue('B'.(8 + $i), iconv("Windows-1251", "UTF-8", number_format($data[1], 2, '.', '')));
		$objPHPExcel->getActiveSheet()->getStyle('B'.(8 + $i))->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
		$objPHPExcel->getActiveSheet()->getStyle('B'.(8 + $i))->applyFromArray($style);
		$objPHPExcel->getActiveSheet()->getStyle('B'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$objPHPExcel->getActiveSheet()->setCellValue('C'.(8 + $i), iconv("Windows-1251", "UTF-8", number_format($data[2], 2, '.', '')));
		$objPHPExcel->getActiveSheet()->getStyle('C'.(8 + $i))->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
		$objPHPExcel->getActiveSheet()->getStyle('C'.(8 + $i))->applyFromArray($style);
		$objPHPExcel->getActiveSheet()->getStyle('C'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$objPHPExcel->getActiveSheet()->setCellValue('D'.(8 + $i), iconv("Windows-1251", "UTF-8", 'картометрический 5.0'));
		$objPHPExcel->getActiveSheet()->getStyle('D'.(8 + $i))->applyFromArray($style);
		$objPHPExcel->getActiveSheet()->getStyle('D'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$objPHPExcel->getActiveSheet()->setCellValue('E'.(8 + $i), iconv("Windows-1251", "UTF-8", '—'));
		$objPHPExcel->getActiveSheet()->getStyle('E'.(8 + $i))->applyFromArray($style);
		$objPHPExcel->getActiveSheet()->getStyle('E'.(8 + $i))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		
		$objPHPExcel->getActiveSheet()->getRowDimension(8 + $i)->setRowHeight('13,5');
	}
	
	fclose($f);
	
	
	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	$objWriter->save("csv/".$csvname.".xlsx");
	
	$filename = $csvname.".xlsx";
	$file="csv/".$csvname.".xlsx";
	$size = filesize($file);
	header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
	header("Content-Length: ".$size);
	header("Content-Disposition: attachment; filename=".$filename."");
	readfile($file);
?>