MATLAB как сервер автоматизации COM с Javascript - PullRequest
6 голосов
/ 03 апреля 2019

Я пытаюсь установить соединение между Matlab и программой Javascript (в моем случае - машинопись) с сервером автоматизации COM, как это предлагается на веб-сайте MathWorks.Документы на сайте содержат примеры для некоторых языков, созданных MS, а не для javascript.

Я не могу найти много информации о том, как установить такое COM-соединение с JS.Из того, что я прочитал, это старая функция Microsoft, которая использовалась только с Internet Explorer.

Проблема
Программа, которую я пишу, является расширением кода VS, поэтому я вообще не использую Internet Explorer.В результате я не верю, что могу использовать ActiveXObjects.

Вопрос
Есть ли другой способ установить связь между моим машинописным кодом и экземпляром Matlab?

Цель
Я пытаюсь запустить файлы Matlab с терминала VS Code без открытия пользовательского терминала Matlab или полного графического интерфейса Matlab.Выходные данные также должны отображаться в терминале кода VS.В MacOS и Linux я могу просто использовать инструменты CLI, но из-за различий между версией Windows и версиями MacOS / Linux это невозможно в Windows.

1 Ответ

1 голос
/ 16 апреля 2019

Я не очень часто использовал TypeScript, и то, что я сделал немного, было давным-давно, когда он был совершенно новым.

Однако пакет NPM win32ole можно использовать в NodeJS, поэтому я предполагаю, что вы сможете использовать его и в Typescript (возможно, с некоторыми незначительными изменениями в примере или небольшой оболочкой).

win32ole npm page

Это пример с этой страницы, показывающий, как взаимодействовать с 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...