PHPExcel是一个非常强大的PHP表格处理模块
大部分情况下我们只用到了这个插件的字符导入导出功能。很多时候我们要导入导出链接,图片等。
PHPExcel中图片与文本是分开的,也就是在操作时间图片与文本各自独立添加到表格中去的,解析时同样要分两次把图片与文本读出来再合并,图片的也是有坐标的,其坐标是以图片的左上角为准。
在某些电脑上可能会存在问题,建议excel 为2003或者2007版本的,也就是后缀名要xls的 不能是xlsx.
代码如下:
<?php
$excel
=PHPExcel_IOFactory::load(
"file.xlsx"
);
//把导入的文件目录传入,系统会自动找到对应的解析类
$sheet
=
$excel
->getSheet(0);
//选择第几个表,如下面图片,默认有三个表
$data
=
$sheet
->toArray();
//把表格的数据转换为数组,注意:这里转换是以行号为数组的外层下标,列号会转成数字为数组内层下标,坐标对应的值只会取字符串保留在这里,图片或链接不会出现在这里。
/*取图片*/
$imgData
=
array
();
$imageFilePath
=
'/images/'
.
date
(
'Y/m/d'
).
'/'
;
//图片保存目录
foreach
(
$sheet
->getDrawingCollection()
as
$img
){
list (
$startColumn
,
$startRow
) = PHPExcel_Cell::coordinateFromString(
$img
->getCoordinates());
//获取列与行号
$imageFileName
=
$img
->getCoordinates().mt_rand(100,999);
/*表格解析后图片会以资源形式保存在对象中,可以通过getImageResource函数直接获取图片资源然后写入本地文件中*/
switch
(
$img
->getMimeType()){
//处理图片格式
case
'image/jpg'
:
case
'image/jpeg'
:
$imageFileName
.=
'.jpg'
;
imagejpeg(
$img
->getImageResource(),
$imageFilePath
.
$imageFileName
);
break
;
case
'image/gif'
:
$imageFileName
.=
'.gif'
;
imagegif(
$img
->getImageResource(),
$imageFilePath
.
$imageFileName
);
break
;
case
'image/png'
:
$imageFileName
.=
'.png'
;
imagepng(
$img
->getImageResource(),
$imageFilePath
.
$imageFileName
);
break
;
}
$imgData
[
$startRow
][
$startColumn
]=
$imageFileName
;
//追加到数组中去
}
?>
在某些人电脑行可能会出现 getMimeType()方法不存在,解决方案:帮Drawing类里面的代码都复制到MemoryDrawing里面记好了,类名不变!