PDA

Просмотр полной версии : Выгрузка трэндов в csv файл



viktor__
26.02.2024, 12:42
Здравствуйте коллеги!
Задача получить табличные значения настраиваемого списка трэндов. Формирование отчетов в pdf не подходит, нужны именно табличные данные для последующей работы в excel. Идеально, конечно создание форматированного .xlsx файла, но это, похоже из области фантастики. Удовлетворительно формировать csv-файл. Встроенная функция экспорта из элемента трэнда не подходит, поскольку пользователю нужно формировать настраиваемый набор трэндов (их может быть много), а так же легко настраиваемый интервал.
Решил двинуться по пути ФБ READ_ARCHIVE_DATA, формирование строки из полученных массивов, запись строки в csv-файл с помощью ФБ StringToFile. И... воткнулся на тупейший вопрос: как вставить в строку символ перевода строки ?)))
Строку формирую типа того: str := CONCAT(str, fbRAD.Times[i]); str := CONCAT(str, ";"); str := CONCAT(str, fbRAD.Values[i]); И дальше: str := CONCAT(str, "\n") - не работает
Еще вопрос: можно ли предварительно в этот csv-файл произвести двоичную запись. Мне нужно в самое начало файла вписать 3 байта - 10х239, 10х187, 10х191, что будет интерпретироваться как кодировка BOM, дабы эксель мог распознавать русские символы.
Вся эта штука у меня функционирует на АРМ'е (тестирую под виндой, а целевая система RT будет работать на Astra Linux), не ждут-ли меня какие-либо подводные камни. Может есть более хороший способ выгрузки?

Может все-таки повозиться со скриптами на C#? Есть у кого-нибудь какие-либо примеры, хотяб для начала.

viktor__
26.02.2024, 13:05
Вопрос по переводу строки снят: str := CONCAT(str, "$R$L"). Достаточно было залянуть в раздел "Строковые константы" в справочнике

viktor__
26.02.2024, 13:16
Есть еще вопрос. Нужен синхронный набор данных. т.е. один столбец времени, для всех параметров - время; ток; давление; температура и т.д, а не время - ток; время - давление; время - температура и т.д. При слове интерполяция заказчик делает круглые глаза - ни в коем случае! На другой скаде реализовал это так: сохраняемые параметры amper, press, temper не назначил в трэндовй архив. В архив назначил дополнительно созданные параметры trAmper, trPress, trTemper. Создал циклическую задачу (по нашим задачам достаточная дискретность 500мс), в которой делаю присавивание trAmper := amper; trPress := press и т.д. Соответственно, в БД пишутся параметры trAmper, trPress.. с фикcированным временем записи (время выполнения задачи). Там, конечно есть небольшая разница (для ~200 трэндов 5-6 мс, это для нас не критично). Можно-ли что-то подобное изобразить в мастерскаде? Я так понимаю нужно ковырять ФБ WriteArchiveData

Ready
26.02.2024, 14:15
Может все-таки повозиться со скриптами на C#? Есть у кого-нибудь какие-либо примеры, хотяб для начала.

Добрый день!

Если .xlsx предпочтителен, наверное лучше на шарпе писать: ФБ READ_ARCHIVE_DATA, программа на C#, библиотека EPPlus.
Пример использования EPPlus: https://www.youtube.com/watch?v=j3S3aI8nMeE
Еще момент, касательно C# в Linux, во всех версиях RT 1.3 - 1.3.3 проблемы с символами кириллицы, пофиксили в 1.3.4

PupaJr
26.04.2024, 08:04
Тоже интересует выгрузка трендов в CSV файлы, что-то не понятно как с этим работать, причём поиск на форуме по CSV почему-то НЕ находит ни одной темы! перебор тем в ручную только кое-что находит..