Partager via


Ajouter des images à un classeur

Cet exemple montre comment utiliser des images à l’aide d’un script Office dans Excel.

Scénario

Les images facilitent la personnalisation, l’identité visuelle et les modèles. Ils aident à faire un classeur plus qu’une simple table géante.

Le premier exemple copie une image d’une feuille de calcul vers une autre. Cela peut être utilisé pour placer le logo de votre entreprise dans la même position sur chaque feuille.

Le deuxième exemple copie une image à partir d’une URL. Il peut être utilisé pour copier les photos qu’un collègue a stockées dans un dossier partagé dans un classeur associé. Notez que cet exemple ne peut pas être adapté pour travailler avec un fichier image local, car cela n’est pas pris en charge par les scripts Office.

Configuration : Exemple de fichier Excel

Ce classeur contient les données, les objets et la mise en forme attendus par le script.

Exemple de code : Copier une image dans des feuilles de calcul

Ajoutez le script suivant à l’exemple de classeur et essayez l’exemple vous-même !

/**
 * 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");
}

Exemple de code : ajouter une image à partir d’une URL à un classeur

Importante

Cet exemple ne fonctionnera pas dans Power Automate en raison de l’appelfetch.

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;
}