我正在为 Excel 编写一个插件,目前我正在根据参数生成图像并从 Web 服务器上的 URL 返回它们。我发现我正在做的一些渲染可以使用 HTML canvas 标签来实现。我希望能够使用 toDataUrl 函数在画布中生成图像并输出到 WebImage 内容类型。
到目前为止的努力都是徒劳的,有没有人有任何见解?
以下示例。
function drawShape() {
let jpegUrl = '';
try {
const canvasContainer = document.getElementById('canvas-container');
canvasContainer.innerHTML = '';
let testCanvas = document.createElement('canvas');
testCanvas.setAttribute("width","300");
testCanvas.setAttribute("height","300");
canvasContainer.append(testCanvas);
if (canvas.getContext) {
const ctx = canvas.getContext("2d");
ctx.fillRect(25, 25, 100, 100);
ctx.clearRect(45, 45, 60, 60);
ctx.strokeRect(50, 50, 50, 50);
}
let jpegUrl = testCanvas.getDataURL("image/jpeg");
} catch (e) {
console.log(e);
}
return {
type: "WebImage",
address: jpegUrl,
altText: 'An Image'
};
}
Excel 不会将结果解释为有效。
你能拿到练习册吗?如果是,您是否尝试过这样的事情:
function main(workbook: ExcelScript.Workbook, sheetName: string, address: string, base64ImageString: string) {
let sheet = workbook.getWorksheet(sheetName);
let range = sheet.getRange(address);
let image = sheet.addImage(base64ImageString);
image.setTop(range.getTop());
image.setLeft(range.getLeft());
}