当前位置: 首页 > 知识库问答 >
问题:

phpexcel - 在PHPExcel和Spreadsheet中,如何防止图片因自动换行而拉伸变形?

姬振濂
2024-05-21

为什么无论PHPExcel和Spreadsheet插入图片,只要同一行其他列有自动换行。图片就会自动拉伸变形?并且设置了图片宽高,取消按比例都没用?
image.png

$drawingContent = new Drawing();        foreach ($listDatas as $item) {            // 插入图片            $drawingContent->setPath($item[3])                ->setCoordinates('D' . $row)                ->setResizeProportional(false)                ->setWidthAndHeight(50, 50)                ->setWorksheet($sheet);            $sheet->setCellValue('A' . $row, $item[0]);            $sheet->setCellValue('B' . $row, $item[1]);            $sheet->setCellValue('C' . $row, $item[2]);            $sheet->setCellValue('E' . $row, $item[4]);            $sheet->setCellValue('F' . $row, $item[5]);            $sheet->setCellValue('G' . $row, $item[6]);            $sheet->setCellValue('H' . $row, $item[7]);            $sheet->setCellValue('I' . $row, $item[8]);            $sheet->setCellValue('J' . $row, $item[9]);            $sheet->setCellValue('K' . $row, $item[10]);            $sheet->setCellValue('L' . $row, $item[11]);            $sheet->setCellValue('M' . $row, $item[12]);            $sheet->setCellValue('N' . $row, $item[13]);            $sheet->setCellValue('O' . $row, $item[14]);            $row++;        }        // 居中        $sheet->getStyle('A9:C'.$row)->applyFromArray($styleArray);        $sheet->getStyle('E9:O'.$row)->applyFromArray($styleArray);

希望图片能按宽高设置去实现

共有1个答案

崔涵亮
2024-05-21

在 PHPExcel 和 PhpSpreadsheet 中,图片可能被拉伸的原因可能与单元格的自动调整大小功能有关。当您在一个单元格中插入图片,并且该单元格所在行的其他列包含自动换行的文本时,Excel 可能会尝试调整行高以适应最大的内容(包括图片和文本)。这可能导致图片被拉伸或压缩。

要解决这个问题,您可以尝试以下方法:

  1. 设置行高为固定值:在插入图片之前,设置包含图片的行的行高为固定值,这样 Excel 就不会尝试自动调整行高。
$sheet->getRowDimension($row)->setRowHeight(行高值);
  1. 设置图片的属性:确保在插入图片时,您已经设置了图片的宽度和高度,并且禁用了按比例缩放。
$drawingContent->setResizeProportional(false)    ->setWidthAndHeight(50, 50);
  1. 避免自动换行:如果可能,尝试避免在包含图片的行的其他列中使用自动换行。或者,您可以尝试将文本放入文本框(形状)中,而不是直接在单元格中。
  2. 检查其他因素:确保没有其他因素(如合并的单元格、其他格式设置等)影响行高或图片的大小。

如果上述方法仍然无法解决问题,您可能需要进一步调试代码或检查 Excel 的具体行为。另外,请确保您使用的是最新版本的 PhpSpreadsheet,因为旧版本可能存在已知的问题或限制。

最后,请注意,Excel 的行为可能因版本而异,因此某些解决方案可能只在特定版本的 Excel 中有效。如果您在使用 PhpSpreadsheet 时遇到与 Excel 兼容性相关的问题,建议查阅相关文档或社区论坛以获取更多帮助。

 类似资料:
  • 本文向大家介绍Javascript防止图片拉伸的自适应处理方法,包括了Javascript防止图片拉伸的自适应处理方法的使用技巧和注意事项,需要的朋友参考一下 前言 相信大家在日常的web开发中,作为前端经常会遇到处理图片拉伸问题的情况。 例如banner、图文列表、头像等所有和用户或客户自主操作图片上传的地方,而一旦牵扯图片,就会涉及到图片拉伸的问题,当然,在图片上传时做手动裁切,让用户或客户清

  • PHPExcel 是一个用来读写 Excel 2007 (OpenXML) 文件的 PHP 库。 示例代码: /** Error reporting */error_reporting(E_ALL); /** Include path **/ini_set('include_path', ini_get('include_path').';../Classes/'); /** PHPExcel *

  • 问题内容: 我正在尝试自动调整工作表的列大小。我正在写文件,最后我尝试调整所有列的大小。 上面的代码不起作用。不更改列大小以适合文本 更新 我正在使用的作家 问题答案: 如果将列设置为AutoSize,PHPExcel会尝试根据列的计算值(基于任何公式的结果)以及格式掩码(例如千位分隔符)添加的任何其他字符来计算列宽。 默认情况下,这是宽度:使用GD时,可以使用一种更准确的计算方法,该方法还可以处

  • 问题内容: 正如您在下面的可运行代码中看到的那样,我尝试使用具有可扩展子框的Box。孩子们的盒子可以改变大小,这一切都很好。主要问题是大小始终相对于父对象。但是我希望它们具有特定的大小,以防万一没有地方再使用JScrollPane。目前,它们仅收缩其他子框。 我尝试了Glue和Filler,但是没有用。胶水只是无效,而填充剂的副作用是始终将其保持在某个位置(即使在ScrollPane起作用时)。有

  • 问题内容: 样品: 我有两个问题,请: 为什么基本上会发生这种情况? 什么是正确的方法,以防止其拉伸而不影响flex容器中的其他flex项目? 问题答案: 您不想拉伸高度跨度吗? 您可能会影响一个或多个弹性项目,而不会拉伸容器的整个高度。 要影响容器的所有弹性项目,请选择以下选项: 您必须设置为,并且该容器的所有弹性项目都将获得其内容的高度。 要仅影响单个flex-item,请选择以下选项: 如果

  • 问题内容: 您好,我是phpexcel的新手,我想知道是否可以通过某种方式将我创建的excel发送给客户端下载而不将其保存在我的服务器上,或者将其下载后立即删除 我正在尝试在页面上创建一个“导出按钮”,该页面将为用户提供他想要我刚刚创建的Excel的“弹出窗口”。 现在,我创建表后,我做了: 但这将其保存到我的服务器 谢谢 问题答案: 与其将其保存到文件中,不如将其保存到文档中: 这会将它按原样发