Partilhar via


Adicionar imagens a uma pasta de trabalho

Este exemplo mostra como trabalhar com imagens usando um Script do Office no Excel.

Cenário

As imagens ajudam com identidade visual, identidade visual e modelos. Eles ajudam a fazer uma pasta de trabalho mais do que apenas uma tabela gigante.

O primeiro exemplo copia uma imagem de uma planilha para outra. Isso pode ser usado para colocar o logotipo da sua empresa na mesma posição em cada planilha.

O segundo exemplo copia uma imagem de uma URL. Isso pode ser usado para copiar fotos armazenadas por um colega em uma pasta compartilhada em uma pasta de trabalho relacionada. Observe que esse exemplo não pode ser adaptado para trabalhar com um arquivo de imagem local, pois não há suporte para scripts do Office.

Instalação: Exemplo de arquivo do Excel

Esta pasta de trabalho contém os dados, objetos e formatação esperados pelo script.

Código de exemplo: copiar uma imagem entre planilhas

Adicione o script a seguir à pasta de trabalho de exemplo e experimente a amostra por conta própria!

/**
 * This script transfers an image from one worksheet to another.
 */
function main(workbook: ExcelScript.Workbook)
{
  // Get the worksheet with the image on it.
  let firstWorksheet = workbook.getWorksheet("FirstSheet");

  // Get the first image from the worksheet.
  // If a script added the image, you could add a name to make it easier to find.
  let image: ExcelScript.Image;
  firstWorksheet.getShapes().forEach((shape, index) => {
    if (shape.getType() === ExcelScript.ShapeType.image) {
      image = shape.getImage();
      return;
    }
  });

  // Copy the image to another worksheet.
  image.getShape().copyTo("SecondSheet");
}

Código de exemplo: adicionar uma imagem de uma URL a uma pasta de trabalho

Importante

Este exemplo não funcionará no Power Automate por causa da fetch chamada.

async function main(workbook: ExcelScript.Workbook) {
  // Fetch the image from a URL.
  const link = "https://raw.githubusercontent.com/OfficeDev/office-scripts-docs/master/docs/images/git-octocat.png";
  const response = await fetch(link);

  // Store the response as an ArrayBuffer, since it is a raw image file.
  const data = await response.arrayBuffer();

  // Convert the image data into a base64-encoded string.
  const image = convertToBase64(data);

  // Add the image to a worksheet.
  workbook.getWorksheet("WebSheet").addImage(image);
}

/**
 * Converts an ArrayBuffer containing a .png image into a base64-encoded string.
 */
function convertToBase64(input: ArrayBuffer) {
  const uInt8Array = new Uint8Array(input);
  const count = uInt8Array.length;

  // Allocate the necessary space up front.
  const charCodeArray = new Array(count) as string[];
  
  // Convert every entry in the array to a character.
  for (let i = count; i >= 0; i--) { 
    charCodeArray[i] = String.fromCharCode(uInt8Array[i]);
  }

  // Convert the characters to base64.
  const base64 = btoa(charCodeArray.join(''));
  return base64;
}