Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
在设计作为可视化报表、产品目录、员工通讯录、仪表板或库存清单的电子表格时,将图片精确地适配到单个单元格是一个常见需求。与其将图像拉伸到多个单元格或随意放置在工作表上,您可能希望图片与所在单元格保持清晰、整齐的绑定关系。 Aspose.Cells 通过两种互补的方式支持此场景:
Picture 添加到工作表,将其 placement 设置为 MoveAndSize,并调整其锚定单元格(upperLeftRow、upperLeftColumn、lowerRightRow、lowerRightColumn),使图片恰好覆盖一个单元格。embeddedImage 属性。图像会自动缩放以适应单元格的显示区域,并随单元格一起移动。
本文接下来的部分将逐步讲解这两种方法,介绍相关的 API,并展示如何在代码中使用它们。浮动图片是驻留在工作表绘图层上的 Picture 对象。虽然它不属于任何单个单元格,但会被锚定到一个单元格区域。图片的锚定单元格(左上角和右下角)决定了它在工作表上的视觉范围。默认情况下,新添加的图片会跨越多个单元格。
若要让浮动图片恰好覆盖 一个单元格,您需要:
worksheet.pictures.add(row, column, stream) 添加图片,该调用会将新图片锚定到指定的单元格。picture.placement 设置为 PlacementType.MoveAndSize,以便当用户更改列宽或行高时,图片会随其下方单元格一起移动和缩放。图片的锚定由四个从零开始的索引属性定义:
picture.upperLeftRow — 图片顶边所在的行索引。picture.upperLeftColumn — 图片左边所在的列索引。picture.lowerRightRow — 图片底边所在的行索引。要使图片的底边位于行 r 的底部,请将其设置为 r + 1。picture.lowerRightColumn — 图片右边所在的列索引。要使图片的右边位于列 c 的右侧,请将其设置为 c + 1。Aspose.Cells 中的行和列索引采用 从零开始 的编号方式。单元格 C6 的行索引为 5,列索引为 2。右下角锚定的差一错误是导致图片看似溢出到相邻单元格的最常见原因。
picture.placement 是 PlacementType 类型的枚举,用于控制当用户调整图片下方行或列时图片的行为。对于单单元格图片,推荐的取值是 PlacementType.MoveAndSize,它会使图片与其下方单元格一起移动和缩放,从而保持精确的适配效果。
Workbook(或打开现有的工作簿)。workbook.worksheets[0] 访问目标 Worksheet。worksheet.pictures.add(5, 2, stream) 添加锚定到单元格 C6 的图片,并接收返回的 Picture 引用。upperLeftRow = 5,upperLeftColumn = 2,lowerRightRow = 6,lowerRightColumn = 3。picture.placement = PlacementType.MoveAndSize,以确保在调整列宽或行高时图片始终与 C6 对齐。.xlsx 文件格式保存到磁盘。
下面的代码演示了完整的实现方法。const AsposeCells = require("aspose.cells");
const fs = require("fs");
const workbook = new AsposeCells.Workbook();
const worksheet = workbook.getWorksheets().get(0);
const fs_stream = fs.createReadStream("logo.png");
const picIndex = worksheet.getPictures().add(5, 2, fs_stream);
const picture = worksheet.getPictures().get(picIndex);
picture.setUpperLeftRow(5);
picture.setUpperLeftColumn(2);
picture.setLowerRightRow(6);
picture.setLowerRightColumn(3);
picture.setPlacement(AsposeCells.PlacementType.MoveAndSize);
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
Aspose.Cells 还提供了一种更简单的单元格绑定图像机制:cell.embeddedImage 属性。将图像字节赋值给该属性即可将图像附加到单元格本身,就像内联内容一样。
cell.embeddedImage 成为"在该单元格内嵌入一张图像"这一目标最简洁的选项。Workbook(或打开现有的工作簿)。workbook.worksheets[0] 访问目标 Worksheet。fs.readFileSync)将磁盘上的图像文件读取到 Buffer 或字节数组中。worksheet.cells["C6"] 或 worksheet.cells[5, 2]。embeddedImage 属性。.xlsx 文件格式保存到磁盘。
下面的代码演示了完整的实现方法。var workbook = new AsposeCells.Workbook();
var worksheet = workbook.getWorksheets().get(0);
// 获取目标单元格 C6
var cell = worksheet.getCells().get("C6");
// 将图像文件读取到字节数组中
var imageData = fs.readFileSync("logo.png");
// 将图像直接嵌入到单元格中
cell.setEmbeddedImage(imageData);
// 可选地调整行高和列宽,使嵌入的图像更清晰可见
worksheet.getCells().setColumnWidth(2, 30); // C 列(索引 2)
worksheet.getCells().setRowHeight(5, 100); // 第 6 行(索引 5)
// 将生成的工作簿保存为 .xlsx 文件
workbook.save("output.xlsx", AsposeCells.SaveFormat.Xlsx);
两种方法都可以生成一张适配在单个单元格内的图片,但它们在图片的存储方式和行为表现上有所不同:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.