Image

The Image sparkline can be used to place an image in a cell. The image can be displayed in different sizes by using the display modes of the Image sparkline function. The source of the image can be a URL or a base64 string.

Description
app.vue
index.html
styles.css
Copy to CodeMine

You can create an image using the Image function in a formula:=IMAGE(source,alt_text,sizing,height,width,clipX,clipY,clipHeight,clipWidth,vAlign,hAlign)

This function has the following parameters:

source: The location of the image on the web or a base64 string.

alt_text: (optional) Alternative text that describes the image for accessibility.

sizing: (optional) A number that represents the image fit mode. One of the following:

  • Keep Scale To Fit - 0
  • Entire Image To Fit - 1
  • Origin Size To Fit - 2
  • Custom Size To Fit - 3

height: (optional) This is the height of the image when the mode is 3.

width: (optional) This is the width of the image when the mode is 3.

clipX: (optional) The X-axis coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.

clipY: (optional) The Y-axis coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.

clipHeight: (optional) The height of the sub-rectangle of the source image to draw into the destination context.

clipWidth: (optional) The width of the sub-rectangle of the source image to draw into the destination context.

vAlign: (optional) This value indicates the vertical alignment of the image. One of the following:

  • Top - 0
  • Center - 1
  • Bottom - 2

hAlign: (optional) This value indicates the horizontal alignment of the image. One of the following:

  • Left - 0
  • Center - 1
  • Right - 2
You can create an image using the Image function in a formula:=IMAGE(source,alt_text,sizing,height,width,clipX,clipY,clipHeight,clipWidth,vAlign,hAlign) This function has the following parameters: source: The location of the image on the web or a base64 string. alt_text: (optional) Alternative text that describes the image for accessibility. sizing: (optional) A number that represents the image fit mode. One of the following: Keep Scale To Fit - 0 Entire Image To Fit - 1 Origin Size To Fit - 2 Custom Size To Fit - 3 height: (optional) This is the height of the image when the mode is 3. width: (optional) This is the width of the image when the mode is 3. clipX: (optional) The X-axis coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context. clipY: (optional) The Y-axis coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context. clipHeight: (optional) The height of the sub-rectangle of the source image to draw into the destination context. clipWidth: (optional) The width of the sub-rectangle of the source image to draw into the destination context. vAlign: (optional) This value indicates the vertical alignment of the image. One of the following: Top - 0 Center - 1 Bottom - 2 hAlign: (optional) This value indicates the horizontal alignment of the image. One of the following: Left - 0 Center - 1 Right - 2
<template> <div class="sample-tutorial"> <gc-spread-sheets class="sample-spreadsheets" @workbookInitialized="initSpread"> <gc-worksheet> </gc-worksheet> </gc-spread-sheets> </div> </template> <script> import Vue from "vue"; import "@mescius/spread-sheets-vue"; import GC from "@mescius/spread-sheets"; import "./styles.css"; let App = Vue.extend({ name: "app", data: function () { return { spread: null, }; }, methods: { initSpread(spread) { spread.suspendPaint(); spread.fromJSON(data[0]); spread.options.allowDynamicArray = true; var sheet = spread.getActiveSheet(); sheet.name("Image Formula"); this.initImageFormula(sheet); spread.resumePaint(); }, initImageFormula(sheet) { sheet.setFormula(1, 1, '=XLOOKUP(A2,Product_list[ITEM],Product_list[IMAGE])'); sheet.setFormula(5, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image13.jpg", "Wellington boots")'); sheet.setFormula(6, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image4.jpg", "Dress")'); sheet.setFormula(7, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image5.png", "Glasses")'); sheet.setFormula(8, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image6.jpg", "Hat")'); sheet.setFormula(9, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image7.png", "Jacket")'); sheet.setFormula(10, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image8.jpg", "Shorts")'); sheet.setFormula(11, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image9.jpg", "Slippers")'); sheet.setFormula(12, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image10.jpg", "Suitcase")'); sheet.setFormula(13, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image11.png", "Swimsuit")'); sheet.setFormula(14, 4, '=IMAGE("$DEMOROOT$/spread/source/images/avatar/image12.jpg", "T-shirt")'); } } }); new Vue({ render: (h) => h(App) }).$mount("#app"); </script>
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/vue/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css"> <!-- SystemJS --> <script src="$DEMOROOT$/en/vue/node_modules/systemjs/dist/system.src.js"></script> <script src="$DEMOROOT$/spread/source/data/image-function.js" type="text/javascript"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app.vue'); System.import('$DEMOROOT$/en/lib/vue/license.js'); </script> </head> <body> <div id="app" style="height: 100%;"></div> </body> </html>
.sample-tutorial { position: relative; height: 100%; overflow: hidden; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .sample-spreadsheets { height: 100%; }
(function (global) { System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' }, '*.vue': { loader: 'vue-loader' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js', '@mescius/spread-sheets-vue': 'npm:@mescius/spread-sheets-vue/index.js', '@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js', 'jszip': 'npm:jszip/dist/jszip.js', 'css': 'npm:systemjs-plugin-css/css.js', 'vue': 'npm:vue/dist/vue.min.js', 'vue-loader': 'npm:systemjs-vue-browser/index.js', 'tiny-emitter': 'npm:tiny-emitter/index.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' } } }); })(this);