PHPEXCEL для хранения записей в массиве и отображения

Вот отрывок из моего кода, который отображает записи Excel и сохраняет их в массив.

Логика состоит в том, чтобы сначала определить, какая запись недействительна, пометить ее, затем для другой действительной записи проверить, не дублируется ли она, если да, пометить ее.

В конце концов, снова просканируйте весь лист, найдите все записи, которых нет в этих двух списках. (дубликат или недействителен)

Проблемы:

1) Когда я показываю таблицу, хотя она может отображаться, но предупреждает меня, что " предупреждение datatables: запросить неизвестный параметр '0' из источника данных для строки 0 "

2) Когда я сохраняю в массиве, он может сохранять только первую строку строки

Итак, я хотел бы знать, есть ли там есть ли ошибка в моей логике цикла? и правильно ли я использовал PHPEXCEL для чтения электронной таблицы? Спасибо.

$reader = PHPExcel_IOFactory::createReader($readerType);
$PHPExcel = $reader->load($file);
$sheet = $PHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());

$pattern="/^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/";

for ($row = 1; $row <= $highestRow; $row++){
for ($head = 0; $head < $highestColumn; $head++){
$testMail = $sheet->getCellByColumnAndRow($head, $row)->getValue();
if (preg_match($pattern,$testMail))
$mailColumn=$head;
}}
if(!isset($mailColumn))
{die('No email column detected, please check your file and import again.');}


$invaild[] = NULL ;
$email[] = NULL ;
$duplicate[] = NULL ;

for ($row = 1; $row <= $highestRow; $row++) {
    for ($y = 0; $y < $highestColumn; $y++) {
    $val = $sheet->getCellByColumnAndRow($y, $row)->getValue();

    if ($y == $mailColumn && !preg_match($pattern,$val))
    {$invaild[]=$row;}
    elseif ($y == $mailColumn && in_array($val,$email))
    {$duplicate[]=$val;
    $duplicate[]=$row;}
    //elseif (!in_array($row,$duplicate) && !in_array($row,$invaild) )
    //{echo $val;}

    if ($y == $mailColumn)
    {$email[]=$val;
    $email=array_unique($email);}

  }
}
$invaild=array_unique($invaild);


foreach ($invaild as $c)
{echo $c;}
echo "<br>";
foreach ($duplicate as $d)
{echo $d;}

?>


<div id="stylized" class="view">
<h1><?echo $file.' Result';?></h1> 
<p>Import from spreadsheet files</p>
   <div id="container">
<table cellpadding="0" cellspacing="0" border="0" class="display" id="viewImport">
<thead>
<tr>

<?
for ($head = 0; $head < $highestColumn; $head++){
if ($head==$mailColumn)
echo "<th field='col'$head> Email address </th>";
else
echo "<th field='col'$head> Unname coloum $head </th>";
}
?>
</tr>
</thead>

<?
for ($row = 1; $row <= $highestRow; $row++) {
    echo "<tr>";
    for ($y = 0; $y < $highestColumn; $y++) {
        if (!in_array($row,$duplicate) && !in_array($row,$invaild)){
            $val = $sheet->getCellByColumnAndRow($y, $row)->getValue();
            echo "<td>";
            if (!$val)
            echo "-";
            else
            echo $val;
            echo "</td>";}
        }
    echo "</tr>";   
    }



?>

</table>
</div>


I work on this these day but still get this display error thank you

![enter image description here][1]

enter image description here

7
задан user782104 9 March 2012 в 10:27
поделиться