如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片


发布者 ourjs  发布时间 1703057237606
关键字 ActiveX|COM+  ChatGPT  Node.JS 

winax 是一个 JavaScript 库,用于在 Windows 平台上调用 ActiveX 控件。在使用 winax 将图片插入到 Excel 中时,你需要使用 Excel 的 ActiveX 对象模型来实现这个目标。

以下是一个示例代码,用 winax 在 Excel 中插入一张图片:

const { ActiveXObject } = require('winax');

// 创建 Excel 应用程序对象
const excelApp = new ActiveXObject('Excel.Application');

// 显示 Excel 应用程序
excelApp.Visible = true;

// 添加一个新的工作簿
const workbook = excelApp.Workbooks.Add();

// 获取活动工作表
const worksheet = workbook.ActiveSheet;

// 插入图片
const imageFilePath = 'path_to_your_image.jpg'; // 替换为你的图片文件路径
const shape = worksheet.Shapes.AddPicture(imageFilePath, /* LinkToFile */ false, /* SaveWithDocument */ true, 0, 0, 100, 100); // 在单元格 A1 处插入图片(0, 0, 100, 100 分别表示左上角的 x, y 坐标和图片的宽高)

// 可以对插入的图片进行进一步的调整,例如:
// shape.Width = 200; // 设置图片宽度
// shape.Height = 150; // 设置图片高度

// 保存工作簿
workbook.SaveAs('path_to_save_excel_file.xlsx'); // 保存 Excel 文件的路径

// 关闭 Excel 应用程序
excelApp.Quit();

在上面的示例中,winax 用于创建 Excel 应用程序对象,并向工作表中添加一张图片。你需要将 path_to_your_image.jpg 替换为你实际图片的文件路径,并根据需要调整图片的插入位置和大小。最后,通过 workbook.SaveAs() 方法保存工作簿,并通过 excelApp.Quit() 关闭 Excel 应用程序。

请确保已经安装了 Excel 并且系统支持 ActiveX 控件的调用。

 

注* 上面的例子是添加图片的引用,可使用Shape嵌入这张图片到Excel

const imagePath = path.join(workingDir, values.toString())
const range = ws.Range(cell_pos)
const shape = ws.Shapes.AddPicture(imagePath, -1, -1, range.left, range.top, -1, -1)

COM API: 参考: https://learn.microsoft.com/zh-cn/office/vba/api/excel.shapes.addpicture