PHPExcel:根据图像设置行高(以像素为单位)

时间:2015-04-25 12:43:24

标签: php phpexcel

有没有办法根据图像的高度设置行高?

示例:我在D12上放置了一个图像(320x480像素),现在我希望第12行的高度适合图像(480像素)。

谢谢!

1 个答案:

答案 0 :(得分:5)

这实际上比看起来要复杂得多 - 阅读Microsoft's own article on setting height/width

当您在Excel中指定高度值时,MS Excel会以磅为单位测量行高,其中点大约为1/72英寸或0.035厘米。 PHPExcel确实提供了用于在点和像素之间进行转换的辅助方法。

$pixels = 480;
$points = PHPExcel_Shared_Drawing::pixelsToPoints($pixels);

并且有一个相应的PHPExcel_Shared_Drawing::pointsToPixels()方法

使用辅助工具计算图像像素分辨率的点数,并将其设置为行高

在内部,Excel OfficeOpenXML格式使用English Metric Units (or EMUs),其中1个EMU定义为1 / 360,000厘米,因此每英寸有914,400个EMU,每点12,700个EMU。

这允许在不同单元之间进行相对简单的转换,并且PHPExcel再次提供了在像素和EMU之间进行转换的辅助方法。

$pixels = 480;
$emu = PHPExcel_Shared_Drawing::pixelsToEMU($pixels);

并且有一个相应的PHPExcel_Shared_Drawing::EMUToPixels()方法

如果使用Excel2007 Writer(保存为OfficeOpenXML格式)保存文件,则图像尺寸将转换为EMU,并且当文件随后重新加载时,转换中可能会有一些轻微的差异,因此请稍微您为该行设置的高度中的边距