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

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

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

谢谢!

解决方法:

这实际上比它看起来要复杂得多 – 阅读量为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,并且当文件随后重新加载时,转换中可能会有一些轻微的差异,因此允许稍微保留为行设置的高度以允许此操作

上一篇:PHPExcel不会重新计算


下一篇:在phpoffice / phpword上添加图表