在php/mysql中导入带有图像的excel文件

Mar*_*cel 8 php mysql import codeigniter phpexcel

我想制作一个导入脚本,允许用户将他们的excel文件(扩展名不重要)上传到我的php应用程序.

应用程序应重新组合项目列表(到目前为止一直很好).

这种情况的困难在于excel文件包含图像......

我已经阅读了有关phpexcel库的信息,但它没有说明图像.

有人的想法吗?

Som*_*luk 14

您可以通过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();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后$ imageContents将包含您可以输出或保存为文件等的图像数据.您可以看到这个问题:PHPExcel:如何在第一页标题中插入图像并将其放大以适合它的内容?

用于访问图像:

活动工作表中所有图像对象的ArrayObject将返回:

$objPHPExcel->getActiveSheet()->getDrawingCollection() ;
Run Code Online (Sandbox Code Playgroud)

这些对象将是对象PHPExcel_Worksheet_DrawingPHPExcel_Worksheet_MemoryDrawing对象:您可以使用is_a()来识别哪些对象.然后,您可以使用适合该类的方法(如API中所述)从文件(对于PHPExcel_Worksheet_Drawing对象)读取图像数据,或直接从PHPExcel_Worksheet_MemoryDrawing对象本身读取.该getName()getDescription()方法可用于检索来回图像对象相关的值.

现在,也可以将图像对象与打印头相关联:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages() 
Run Code Online (Sandbox Code Playgroud)

可用于从页眉/页脚中检索图像.这是一个PHPExcel_Worksheet_HeaderFooterDrawing对象的数组.所有PHPExcel_Worksheet_Drawing方法都可用于从这些对象中提取图像文件.


Mar*_*ker 1

PHPExcel确实支持图像,尽管它还不支持图表

编辑

PHPExcel 1.7.7 版本中添加了对 Excel 2007+ .xlsx 文件的图表阅读器支持