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

PHPExcel: Set row height in pixels according to image

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

示例:我将图像(320x480 像素)放在 D12 上,现在我希望第 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()方法

使用助手根据图像的像素分辨率计算点数,并将其设置为行高


但在内部,ExcelOfficeOpenXML 格式使用 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,随后重新加载文件时,可能会出现一些细微差异转换,因此在您为行设置的高度中留出一点余量以允许此