PDA

Просмотр полной версии : C# скрипты. Добавление коллекции сборок



hjkh
05.05.2022, 14:33
Добрый день.
Пытаюсь реализовать скрипт для экспорта данных в Эксель.
При компиляции выдает ошибку:
Не удалось найти имя типа или пространства имен "Worksheet" и "Cell"
Какую библиотеку сборок надо добавить, чтобы устранить эту ошибку?

SCADAMaster
05.05.2022, 15:15
https://docs.microsoft.com/ru-ru/dotnet/api/microsoft.office.interop.excel._worksheet?view=exc el-pia
Пространство имен:
Microsoft.Office.Interop.Excel

hjkh
06.05.2022, 10:19
Хорошо.
Установил библиотеку Microsoft.Office.Interop.Excel.dll в папку C:\Program Files (x86)\MPSSoft\MasterSCADA.
Добавил сборку во вкладке настойки программы МастерСкада.
Каким образом можно открыть файл Excel с помощью скрипта?
При попытке компиляции кода

using System;
using MasterSCADA.Script.FB;
using MasterSCADA.Hlp;
using FB;
using FB.FBAttributes;
using System.Linq;
using System.IO;
using System.IO.Compression;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using System.Text;
using System.Configuration;
using MasterSCADALib;
using System.Threading;
using InSAT.Library;
using InSAT.Library.Interop;
using MasterSCADA.Common.PropPage;
using Microsoft.Office.Tools.Excel;
using System.Diagnostics;

[FBRetain]
public partial class ФБ : ScriptBase
{
public override void Execute()
{
Workbooks.Open(@"C:\Excel.xlsx");
}
}

на строке Workbooks.Open(@"C:\Excel.xlsx"); выдает ошибку:
(CS0120) Для нестатического поля, метода или свойства "Microsoft.Office.Interop.Excel.Workbooks.Open(stri ng, object, object, object, object, object, object, object, object, object, object, object, object, object, object)" требуется ссылка на объект

SCADAMaster
06.05.2022, 10:25
Воспользуйтесь поиском - примеров в интернете много:
https://translated.turbopages.org/proxy_u/en-ru.ru.ef29137f-6274cd30-c9285b1b-74722d776562/https/social.msdn.microsoft.com/Forums/en-US/afb76dd6-c28d-41c3-8c85-d9b4c307ca98/how-to-search-and-open-and-excel-workbook-in-c?forum=exceldev
И сразу хотим отметить, что у объекта со скриптом следует поставить флаг "Собственный цикл объекта" - чтобы выделить его в отдельный поток.

hjkh
13.05.2022, 10:54
Добрый день.
Есть указанный ниже код для создания файла в заданной папке. В программе Visual Studio он отрабатывает. В МастерСкада этот код компилируется, но файл не создает. Почему?
Запуск кода в Мастерскаде проичходит по кнопке на мнемосхеме, при периодическом опросе каждый такт также ничего не происходит. Прошу помочь.

using System;
using System.IO;
using System.Text;

class Test
{
public static void Main()
{
string path = @"C:\MyTest.txt";

try
{
// Create the file, or overwrite if the file exists.
using (FileStream fs = File.Create(path))
{
byte[] info = new UTF8Encoding(true).GetBytes("Этот текст находится внутри файла");
// Add some information to the file.
fs.Write(info, 0, info.Length);
}

// Open the stream and read it back.
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}

catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}

SCADAMaster
13.05.2022, 11:12
Вы прямо вот так и написали?
Так не будет работать. Посмотрите как работать со скриптами в MasterSCADA
https://stepik.org/course/104810/