<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> --> <title>Страница ввода данных</title> </head> <body> <?php //http://localhost:8080/excel/index.php?XDEBUG_SESSION_START=session_name define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); /** PHPExcel_IOFactory */ require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php'; // Проверяем существование файла if (!file_exists("uploads/test_data.xls")) { exit("Файл test_data.xls не найден!" . EOL); } //Загрузка файла //$objPHPExcel = PHPExcel_IOFactory::load('uploads/test_data.xls'); $objPHPExcel = PHPExcel_IOFactory::load('uploads/JDC51.xls'); $objPHPExcel->setActiveSheetIndex(0); $sheet = $objPHPExcel->getActiveSheet(); echo date('H:i:s') , " Load from Excel2007 file" , EOL; echo '<br />'; //$array = ['ID', 'Name', 'Date', 'Hours']; $array = ['Период', 'Документ', 'Аналитика Дт', 'Аналитика Кт', 'Дебет', 'Кредит', 'Текущее сальдо', 'Счет']; $temp_row = 1; /* echo mb_detect_encoding($array[0]) ; echo '</br>'; echo 'Значение $array[0] = '.$array[0]. '</br>'; echo mb_detect_encoding($sheet->getCellByColumnAndRow(0, 10)); echo '</br>'; echo $sheet->getCellByColumnAndRow(1, 10)->getValue(); echo '</br>'; $val2 = mb_convert_encoding($sheet->getCellByColumnAndRow(1, 10)->getValue(), "UTF-8"); echo 'Данные из EXCEL после конвертации: '. $val2; echo $sheet->getCellByColumnAndRow(2, 10)->getColumn(); echo $sheet->getCellByColumnAndRow(2, 10)->getRow(); exit; */ // КОД РАБОТЫ С ПОЛУЧЕНИЕМ НАЗВАНИЙ КОЛОНОК echo $sheet->getCellByColumnAndRow('L6:N7')->getColumn(); $colIndex = PHPExcel_Cell::columnIndexFromString('W'); echo $colIndex; echo '</br>'; $text = 'C10:AL11'; echo preg_match('/^[a-zA-Z]*/',$text, $matches); // echo preg_match('/^[a-zA-Z]*/',$text, $matches); echo '</br>'; print_r ($matches); $text1 = stristr($text, ":"); $text1 = trim($text1, ":"); echo preg_match('/^[a-zA-Z]*/',$text1, $matches1); echo '</br>'; print_r ($matches1); echo '</br>'; echo $matches[0] .' => '. PHPExcel_Cell::columnIndexFromString($matches[0]); echo '</br>'; echo $matches1[0] .' => '. PHPExcel_Cell::columnIndexFromString($matches1[0]); echo getIsMergeCells($text); //exit; // ----------------- КОНЕЦ - - -- - - КОД РАБОТЫ С ПОЛУЧЕНИЕМ НАЗВАНИЙ КОЛОНОК echo "<table border=1px, border-spacing=2px>"; for ($row = 0; $row <= 6/*$sheet->getHighestRow()*/; $row++) { echo "<tr>"; $nColumn = PHPExcel_Cell::columnIndexFromString( $sheet->getHighestColumn()); for ($column = 0; $column < $nColumn; $column++) { $value = trim($sheet->getCellByColumnAndRow($column, $row)->getValue()); if(isset($value)){ foreach($array as $val){ if($val == $value){ $rrow = $sheet->getCellByColumnAndRow($column, $row)->getRow(); $rcolumn = $sheet->getCellByColumnAndRow($column, $row)->getColumn(); $adrzz = $rcolumn . $rrow; $adrzzBool = $adrzz; $adrzz = foo($adrzz, $sheet); $dd0 = ''; if (getIsMergeCells($adrzz)){ $dd0 = "Range is merge"; $columnStart = getSubColumn($adrzz); $text1 = stristr($adrzz, ":"); $text1 = trim($text1, ":"); $columnEnd = getSubColumn($text1); $dd0 = $dd0 . '<br /> $columnStart = ' . $columnStart .'<br />' ; $dd0 = $dd0 . '<br /> $columnEnd = ' . $columnEnd; } $dd = ""; $ff= fooBool($adrzzBool, $sheet); if($ff){ $dd= 'Ячейка объеденина'; } else{ $dd=''; } /* */ echo "<td>" . $value . '<br />'. $rcolumn . ' ' . $rrow . '<br />'. $adrzz . '<br />' . $dd .'<br />' . $dd0 . "</td>"; /* $value = $value . '<br />' .$column=$column+1; echo "<td>" . $value. "</td>"; $column=$column-1; $temp_row = $row; */ } } } //if($temp_row <> $row) echo "<td>$value</td>"; } echo "</tr>"; } echo "</table>"; echo "Total Row: " . $sheet->getHighestRow() . "</br>"; echo "Total Colum: " . $sheet->getHighestColumn() . "</br>". PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn()); function foo($myCell, $sheet){ //$myCell = 'D3'; $isInMerge = false; $cell = $sheet->getCell($myCell); foreach($sheet->getMergeCells() as $mergeRange) { if ($cell->isInRange($mergeRange)) { return $mergeRange; $isInMerge = true; break; } } /*if (!$isInMerge) { echo 'Cell ', $cell->getCoordinate(), ' is not part of a merge range', PHP_EOL; } */ } function fooBool($myCell, $sheet){ //$myCell = 'D3'; $isInMerge = false; $cell = $sheet->getCell($myCell); foreach($sheet->getMergeCells() as $mergeRange) { if ($cell->isInRange($mergeRange)) { return true; //$isInMerge = true; break; } } if (!$isInMerge) { return false; // echo 'Cell ', $cell->getCoordinate(), ' is not part of a merge range', PHP_EOL; } } function getIsMergeCells($address){ unset($firstColumn); unset($lastColumn); //require_once dirname(__FILE__) . '/Classes/PHPExcel/IOFactory.php'; $firstColumn = preg_match('/^[a-zA-Z]*/',$address, $matches); $firstColumn = PHPExcel_Cell::columnIndexFromString($matches[0]); $text1 = stristr($address, ":"); $text1 = trim($text1, ":"); $lastColumn = preg_match('/^[a-zA-Z]*/',$text1, $matches1); $lastColumn = PHPExcel_Cell::columnIndexFromString($matches1[0]); if(is_int($firstColumn) && is_int($lastColumn) && isset($firstColumn) && isset($lastColumn) ){ if ($firstColumn === $lastColumn) { return false; // это означает, что ячейка не объеденена } else { return true; // это означает, что ячейка объеденена } } } function getSubColumn($address){ $firstColumn = preg_match('/^[a-zA-Z]*/',$address, $matches); $firstColumn = PHPExcel_Cell::columnIndexFromString($matches[0]); return $firstColumn; } ?> </body> </html> |