Импортируйте файлы Excel с изображениями в php / mysql - PullRequest
8 голосов
/ 15 июня 2010

Я хочу создать скрипт импорта, который позволит пользователям загружать свои файлы Excel (расширение не важно) в мое приложение php.

Приложение должно составить список предметов (пока все хорошо).

Сложность в этом случае заключается в том, что файлы excel содержат изображения ...

Я прочитал информацию о библиотеке phpexcel, но она ничего не говорит об изображениях.

У кого-нибудь есть идеи?

Ответы [ 3 ]

14 голосов
/ 21 марта 2012

Вы можете получить доступ к изображениям с помощью библиотеки 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 можно использовать для извлечения файла изображения из этих объектов.

1 голос
/ 28 марта 2012

Импортировать данные из Excel (или любой другой программы, которая может создать текстовый файл) очень просто, используя команду LOAD DATA из командной строки MySQL.

1) Сохраните данные Excel в виде файла csv(В Excel 2007 используется функция «Сохранить как»). Проверьте сохраненный файл с помощью текстового редактора, такого как Блокнот, чтобы увидеть, как он выглядит на самом деле, то есть какой разделитель использовался и т. Д.temp \ yourfile.csv 'INTO TABLE database.table FIELDS TERMINATED BY'; 'ЗАКРЫТЫЕ '' 'ЛИНИИ, ПРЕКРАЩЕННЫЕ' \ r \ n '(field1, field2);

3) Для хранения изображения необходимо использовать TO_BASE64

Готово!

Ссылка

1 голос
/ 15 июня 2010

PHPExcel поддерживает изображения, хотя еще не поддерживает диаграммы

EDIT

Добавлена ​​поддержка считывателя диаграмм для файлов Excel 2007+ .xlsx в версии 1.7.7 из PHPExcel

...