Я хочу создать сценарий импорта, который позволяет пользователям загружать свой файл excel (расширение не важно) в мое приложение php.
Приложение должно пересобирать список элементов (насколько это хорошо).
Трудность в этом случае заключается в том, что файлы excel содержат изображения …
Я читал информацию о библиотеке phpexcel, но он ничего не говорит о изображениях.
Кто-нибудь идеи?
Вы можете получить доступ к изображениям библиотеки PHPExcel .
Для импорта изображений:
$objPHPExcel = PHPExcel_IOFactory::load("MyExcelFile.xls"); foreach ($objPHPExcel->getSheetByName("My Sheet")->getDrawingCollection() as $drawing) { if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { ob_start(); call_user_func( $drawing->getRenderingFunction(), $drawing->getImageResource() ); $imageContents = ob_get_contents(); ob_end_clean(); } }
Тогда $ imageContents будет содержать данные изображения, которые вы можете выводить или сохранять в виде файла и т. Д. Вы можете увидеть этот вопрос: PHPExcel: как вставить изображение в заголовок первой страницы и увеличить его, чтобы он соответствовал его содержимому?
Для доступа к изображениям:
ArrayObject всех объектов изображения на активном листе возвращает:
$objPHPExcel->getActiveSheet()->getDrawingCollection() ;
Эти объекты будут либо PHPExcel_Worksheet_Drawing
либо PHPExcel_Worksheet_MemoryDrawing
: вы можете определить, с какой помощью is_a () . Затем вы можете использовать методы, соответствующие этому классу (как описано в API), либо для чтения данных изображения из файла (для объектов PHPExcel_Worksheet_Drawing), либо непосредственно из объекта PHPExcel_Worksheet_MemoryDrawing. getName()
и getDescription()
могут использоваться для извлечения соответствующих значений для объекта изображения.
Теперь также возможно иметь объекты изображения, связанные с заголовками печати:
$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages()
может использоваться для извлечения изображений из верхнего / нижнего колонтитула. Это массив объектов PHPExcel_Worksheet_HeaderFooterDrawing. Все методы PHPExcel_Worksheet_Drawing могут использоваться для извлечения файла изображения из этих объектов.
Для импорта данных из Excel (или любой другой программы, способной создавать текстовый файл) очень просто использовать команду LOAD DATA из командной строки MySQL.
1) Сохраните данные Excel как файл csv (в Excel 2007 с помощью «Сохранить как»). Проверьте сохраненный файл с помощью текстового редактора, например «Блокнот», чтобы увидеть, на что он похож, например, какой разделитель использовался и т. Д.
2) LOAD DATA LOCAL INFILE 'C: \ temp \ yourfile.csv' INTO TABLE database.table FIELDS TERMINATED BY ';' ENCLOSED BY '' 'LINES TERMINATED by' \ r \ n '(field1, field2);
3) Чтобы сохранить изображение, необходимо использовать TO_BASE64
Готово!
Справка
PHPExcel поддерживает изображения, хотя он еще не поддерживает графики
РЕДАКТИРОВАТЬ
Поддержка чтения карт добавлена для файлов Excel 2007+ .xlsx в версии 1.7.7 PHPExcel