[НЕ РЕШЕНО]Читаю excel библиотекой phpexcel. Ниже код. На localhost работает, переношу в DRUPAL модуль перестает. Почему?

Главные вкладки

Аватар пользователя andr-ok andr-ok 22 июля 2013 в 9:46

Вот это раюотает при запуске на localhost

<?php
require_once 'Classes/PHPExcel/IOFactory.php';

$objPHPExcel = PHPExcel_IOFactory::load("23.xlsx");
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
{
        //массив с нашими терминами
        $termsArray=array();
    $highestRow         = $worksheet->getHighestRow(); // например, 10
    $highestColumn      = $worksheet->getHighestColumn(); // например, 'B'
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
        $i=1;
        for ($row = 1; $row <= $highestRow; ++ $row)
    {
                for ($col = 0; $col < $highestColumnIndex; ++ $col)
        {
                        $cell = $worksheet->getCellByColumnAndRow($col, $row);
            $val = $cell->getValue();
                        if($val==$i)
                        {
                                $cell = $worksheet->getCellByColumnAndRow($col+1, $row);
                                $val = $cell->getValue();
                                $termsArray[]=$val;
                                $i++;
                        }
                }
        }
        echo '<br>';
        print_r($termsArray);
        echo '</br>';
}
?>

Вот эта функция в модуле не работает. Выдает ошибку из функции, содержащейся в phpExcel, которая вообще не вызывется в предыдущем варианте.

function getTermsFromExcel($pathh)
{
require_once 'Classes/PHPExcel/IOFactory.php';
$objPHPExcel = PHPExcel_IOFactory::load("public://te.xlsx");

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
{
        //массив с тем что хочу извлечь
        $termsArray=array();
 
    $highestRow         = $worksheet->getHighestRow();
    $highestColumn      = $worksheet->getHighestColumn();
    $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
       
        $i=1;
       
        //цикл по извлечению того что нужно
        for ($row = 1; $row <= $highestRow; ++ $row)
    {
                for ($col = 0; $col < $highestColumnIndex; ++ $col)
        {
               
                        $cell = $worksheet->getCellByColumnAndRow($col, $row);
            $val = $cell->getValue();
               
                        if($val==$i)
                        {
                                $cell = $worksheet->getCellByColumnAndRow($col+1, $row);
                                $val = $cell->getValue();
                                $termsArray[]=$val;
                                $i++;
                               
                        }
                }
        }      
}

return $termsArray;
}

Комментарии

Аватар пользователя natbampo natbampo 22 июля 2013 в 10:30

"andr-ok" wrote:
Выдает ошибку из функции, содержащейся в phpExcel

текст ошибки привести с первого раза не судьба?

<?php
require_once 'Classes/PHPExcel/IOFactory.php';?>

папка Classes - в корне сайта?

Аватар пользователя andr-ok andr-ok 22 июля 2013 в 10:50

Ошибка - необъявленная переменная. Просто дело в том что эта функция при запуске из не под друпала, вообше не вызывается и не используется. Папка Classes рядом с файлом my_modyle.module

Аватар пользователя andr-ok andr-ok 22 июля 2013 в 11:03

всмысле вместо require_once 'Classes/PHPExcel/IOFactory.php';

писать
$path = drupal_get_path('module', 'my_module').'Classes/PHPExcel/IOFactory.php';
require_once $path;

Аватар пользователя andr-ok andr-ok 22 июля 2013 в 11:38

Не не работает твой вариант.
Вот ошибка в моем варианте. Это даже не ошибка. Так-то кот отрабатывает, но результата нет. Я пробывал закоментить эту переменную, тогда вообще ошибок не было. Но результата тоже не было, не читался Excel.
Notice: Undefined variable: fileHandle in PHPExcel_Reader_CSV->_skipBOM() (line 147 of C:\wamp\www\pal\sites\all\modules\form_test\Classes\PHPExcel\Reader\CSV.php).
Warning: rewind() expects parameter 1 to be resource, null given in PHPExcel_Reader_CSV->_skipBOM() (line 147 of C:\wamp\www\pal\sites\all\modules\form_test\Classes\PHPExcel\Reader\CSV.php).

Если делать как предложили вы, то
Warning: require_once(sites/all/modules/my_module/Classes/PHPExcel/IOFactory.php): failed to open stream: No such file or directory in getTermsFromExcel() (line 58 of C:\wamp\www\pal\sites\all\modules\form_test\form_test.module).
Вообще не находит.

Аватар пользователя natbampo natbampo 22 июля 2013 в 11:55

"andr-ok" wrote:
Если делать как предложили вы, то
Warning: require_once(sites/all/modules/my_module/Classes/PHPExcel

ну так у тебя модуль называется не my_module, а form_test Smile

Аватар пользователя andr-ok andr-ok 22 июля 2013 в 12:07

ну да, скопировал - забыл поменять) Теперь все так же, та же ошибка, результата нет.
Тут наверно надо понять почему лезет в тут функцию в которую не должен лезть
Notice: Undefined variable: fileHandle in PHPExcel_Reader_CSV->_skipBOM() (line 147 of C:\wamp\www\pal\sites\all\modules\form_test\Classes\PHPExcel\Reader\CSV.php).
Warning: rewind() expects parameter 1 to be resource, null given in PHPExcel_Reader_CSV->_skipBOM() (line 147 of C:\wamp\www\pal\sites\all\modules\form_test\Classes\PHPExcel\Reader\CSV.php).