2016-05-24 6 views
0

Нужна помощь с этим кодом. Когда я импортирую файл xlsx, объединенные ячейки рассматриваются как 2 строки. Как я могу изменить его, чтобы выбрать col col, чтобы сплит-ячейки были разбиты и обработаны как отдельные столбцы (например: A + B + C с «некоторой информацией» -> cola с «некоторой информацией», colB с 'null/empty', colC с 'null/empty').Импорт xlsx в mysql с phpexcel, выбрав все столбцы

Код:

<?php 
@session_start(); 
//--> 
$file = $_SESSION['file']; 
$sheet = $_POST['sheet']; 
//--> 
//--> Include PHPExcel and MySQLi db */ 
require_once dirname(__FILE__) . '\Classes2\DB.php'; 
require_once dirname(__FILE__) . '\Classes2\PHPExcel.php'; 

//--> Create DB object 
use DB\MySQLi; 


//--> Create new PHPExcel object 
$objPHPExcel = PHPExcel_IOFactory::load($file); 
$objWorksheet = $objPHPExcel->getSheet($sheet); 

$dataArr = array(); 

foreach ($objWorksheet->getRowIterator() as $row) { 
    $rowIndex = $row->getRowIndex(); 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(True); 
    foreach ($cellIterator as $cell) { 
     $colIndex = PHPExcel_Cell::columnIndexFromString($cell->getColumn()); 
     $val = $cell->getValue(); 
     $dataArr[$rowIndex][$colIndex] = $val; 

    } 
} 

unset($dataArr[1]); 

$hostname = 'localhost'; 
$username = 'user'; 
$password = '´pass'; 
$database = 'base'; 

$db = new MySQLi($hostname, $username, $password, $database); 

foreach($dataArr as $val){ 
    $query = $db->query("INSERT INTO excel SET eid = '" . $db->escape($val['1']) . "',name = '" . $db->escape($val['2']) . "', email = '" . $db->escape($val['3']) . "', dob = '" . $db->escape($val['4']) . "'"); 
}          

?> 

ответ

0

Вы можете проверить, если какой-либо отдельной клетки является частью диапазона слияния с помощью:

$cell->isInMergeRange(); 

, который возвращает логическое значение идентификации ячейки, является ли или не является частью диапазон слияния или нет.

только топ-левая ячейка в диапазоне слияния содержит значение, и вы можете определить, если ячейка в диапазоне слияния является то, что значение ячейки с помощью

$cell->isMergeRangeValueCell(); 

Так проверить клетка является ли частью более диапазон слияния, если нет, то вы хотите его значение; и если это так, проверьте f, это ячейка значения диапазона слияния, и вы хотите ее значение, если оно есть, в противном случае отказаться от него

+0

Привет, Марк, спасибо за ваш ответ, имеет смысл. Просто помощь litle ... В моем коде, где и/или что я должен изменить, чтобы он работал с вашим примером и объяснением? Спасибо. –

Смежные вопросы