将图片插入单元格

简介

在设计用作可视化报表、产品目录、员工通讯录、仪表板或库存清单的电子表格时,将图片精确放入单个单元格是一项常见需求。与其将图片拉伸跨越多个单元格或随意放置在工作表上,您可能希望获得一个干净的、与单元格绑定的图片,使其始终与所属单元格保持对齐。 Aspose.Cells 通过两种互补的方式支持此场景:

  • 方式 1 — 在单元格上方放置浮动图片。 向工作表添加 Picture,将其 Placement 设置为 MoveAndSize,并调整其锚定单元格(UpperLeftRow、UpperLeftColumn、LowerRightRow、LowerRightColumn),使图片恰好覆盖一个单元格。
  • 方式 2 — 将图片直接嵌入单元格。 将图片字节赋值给单元格的 EmbeddedImage 属性。图片会自动缩放以适应单元格的显示区域,并随单元格一起移动。 本文其余部分将逐步讲解这两种方式,介绍相关的 API,并展示如何在代码中使用它们。

方式 1:在单元格上方放置图片

浮动图片是驻留在工作表绘图层上的 Picture 对象。虽然它不属于任何单个单元格,但它会被锚定到一个单元格区域。图片的锚定单元格(左上角和右下角)决定了其在工作表上的视觉范围。默认情况下,新添加的图片会跨越多个单元格。 要使浮动图片恰好覆盖一个单元格,您需要:

  1. 使用 worksheet.getPictures().add(int row, int column, InputStream stream) 添加图片,该方法将新图片锚定到指定单元格。
  2. 设置四个锚定属性,使图片的边界矩形与目标单元格重合。
  3. 设置 picture.setPlacement(PlacementType.MOVE_AND_SIZE),以便在用户更改列宽或行高时,图片随底层单元格一起移动和调整大小。

将图片锚定到单个单元格

图片的锚定由四个从零开始的索引属性定义:

  • picture.setUpperLeftRow(int) — 图片顶部边缘的行索引。
  • picture.setUpperLeftColumn(int) — 图片左侧边缘的列索引。
  • picture.setLowerRightRow(int) — 图片底部边缘的行索引。若要使图片的底部边缘位于行 r 的底部,请将其设置为 r + 1。
  • picture.setLowerRightColumn(int) — 图片右侧边缘的列索引。若要使图片的右侧边缘位于列 c 的右侧,请将其设置为 c + 1。