MATLAB作为具有Javascript的COM自动化服务器

Bra*_*sen 6 javascript com matlab typescript

我试图按照MathWorks网站上的建议,使用COM自动化服务器在Matlab和Javascript(在我的情况下为打字稿)程序之间建立连接。网站上的文档提供了一些由MS创建的语言示例,而不是针对javascript的示例。

我似乎找不到很多有关如何用JS建立这样的COM连接的信息。据我了解,这是一项仅用于Internet Explorer的旧Microsoft功能。

问题
我正在编写的程序是VS Code扩展,因此我根本没有使用Internet Explorer。结果,我不相信我可以使用ActiveXObjects。

问题
有没有其他方法可以在我的打字稿代码和Matlab实例之间建立连接?

目标
我试图从VS Code终端运行Matlab文件,而无需打开自定义Matlab终端或完整的Matlab GUI。输出也应显示在VS Code终端中。在MacOS和Linux上,我可以简单地使用CLI工具,但是由于Windows版本和MacOS / Linux版本之间的差异,在Windows上是不可能的。

vis*_*man 1

我没怎么用过 TypeScript,我所做的也很少,那是很久以前的事了,那时它还是全新的。

然而,NPM 包 win32ole 可以在 NodeJS 中使用,所以我假设您也可以在 Typescript 中使用它(也许对示例进行一些小的修改,或者一个小的包装器)。

win32ole npm 页面

这是该页面的一个示例,展示了如何与 Excel 交互来创建和保存工作表。

try{
  var win32ole = require('win32ole');
  // var xl = new ActiveXObject('Excel.Application'); // You may write it as:
  var xl = win32ole.client.Dispatch('Excel.Application');
  xl.Visible = true;
  var book = xl.Workbooks.Add();
  var sheet = book.Worksheets(1);
  try{
    sheet.Name = 'sheetnameA utf8';
    sheet.Cells(1, 2).Value = 'test utf8';
    var rg = sheet.Range(sheet.Cells(2, 2), sheet.Cells(4, 4));
    rg.RowHeight = 5.18;
    rg.ColumnWidth = 0.58;
    rg.Interior.ColorIndex = 6; // Yellow
    var result = book.SaveAs('testfileutf8.xls');
    console.log(result);
  }catch(e){
    console.log('(exception cached)\n' + e);
  }
  xl.ScreenUpdating = true;
  xl.Workbooks.Close();
  xl.Quit();
}catch(e){
  console.log('*** exception cached ***\n' + e);
}
Run Code Online (Sandbox Code Playgroud)