Проблеми с PHPExcel

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

Аватар пользователя Diablo762 Diablo762 27 июня 2015 в 0:21

Всем доброго времени суток. Коротко о проблеме. Есть скрипт который должен парсить *.xls и *.xlsx с помощью библиотеки PHPExcel. Файлы с расширением *.xls обрабатываются и вставляются в таблицу норм, но при выборе файла с расширением *.xlsx (данные в файлах одинаковые), возникают проблемы. Вот что паказуе Друпал 7 при импорте *.xlsx файла.

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Invalid char in CDATA 0x3 in Entity, line: 1 in PHPExcel_Reader_HTML->loadIntoExisting() (line 495 of Z:\home\drupal7\www\sites\default\files\PHPExcel\PHPExcel\Reader\HTML.php).
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Invalid char in CDATA 0x4 in Entity, line: 1 in PHPExcel_Reader_HTML->loadIntoExisting() (line 495 of Z:\home\drupal7\www\sites\default\files\PHPExcel\PHPExcel\Reader\HTML.php).
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Invalid char in CDATA 0x14 in Entity, line: 1 in PHPExcel_Reader_HTML->loadIntoExisting() (line 495 of Z:\home\drupal7\www\sites\default\files\PHPExcel\PHPExcel\Reader\HTML.php).

а в таблицу, во все поля вставляется вот это - "PK". Незнаю что это значит. Помогите, уже почти два дня решаю эту проблему. Я думаю это проблемы с PHPExcel (у меня версия PHPExcel 1.8.0).

Комментарии

Аватар пользователя Diablo762 Diablo762 27 июня 2015 в 0:24

Простите, забыл добавить скрипт

<?php
function asd_cron(){
        
$files file_scan_directory("public://test",
        
"/.*\.xls/");
        require_once(
"public://PHPExcel/PHPExcel/IOFactory.php");
        foreach (
$files as $file) {
              
$xls PHPExcel_IOFactory::load("public://test/test1.xlsx");
            
$xls->setActiveSheetIndex(0);
            
$sheet $xls->getActiveSheet();

            

$rowIterator $sheet->getRowIterator();
            
$colspan = array('tovar''price''qty''article''original''price''title''brand''marka''model''descr');
            foreach (
$rowIterator as $row) {
                
$query = array();
                
$k 0;
                
$cellIterator $row->getCellIterator();
                foreach (
$cellIterator as $cell) {
                    
$col $cell->getCalculatedValue();
                    
db_insert("test")
                      ->
fields(array(
                              
'tovar' => $col,
                            
'price' => $col,
                          ))
                      ->
execute();
                }
            }
        }
          return 
false;
}
?>
Аватар пользователя rukovoditel rukovoditel 19 марта 2016 в 20:11

Сегодня так же столкнулся с ошибкой (HTML.php:495) правда не на drupal а на своем проекте.

Методом "научного тыка" выяснил что дання проблема появляется если в имени файле есть UTF символы или русские символы.

Исправил путем переименования загружаемого файла.

Строка 495:
<?php$loaded = $dom->loadHTML(mb_convert_encoding($this->securityScanFile($pFilename), 'HTML-ENTITIES', 'UTF-8'));?>

В вашем случаи нету русских символов, но мне кажется что данной функции не нравится путь к фалу...