В таблицах программы Rastrwin по умолчанию есть возможность экспортировать и импортировать данные через файлы csv (простой текстовый файл, где данные разделяются через точку с запятой).
В формах указываются:
- путь до файла
- таблица, в которую нужно экспортировать или импортировать
- разделитель данных для файла
- поля которые нужно экспортировать или импортировать
- выборка — условие, по которому нужно выделить определенные данные
А что делать, если нужно сделать это с несколькими файлами? Тут без макросов и скриптов далеко не уйдешь.
Задача такая: проставить в нескольких файлах новые значения в определенных местах, используя динамические выборки (выборки, в которых меняется условие)
Для примера нам нужно в таблице ветви заменить значения столбцов r,x,b на новые значения. У нас есть 2 файла: схема1.rg2 и схема2.rg2. Для каждого из этих файлов у нас есть файлы izm_vetv1.csv и izm_vetv2.csv с таким содержимым:
1 2 3 | 1;2;7,08;26,10;-0.000156 2;3;8,26;30,45;-0.000182 3;4;11,80;43,50;-0.000260 |
В этом файле данные разделены на столбцы ip;iq;r;x;b, где
- ip — столбец начала ветви
- iq — столбец конца ветви
- r, x и b — сопротивления и проводимость ветви
Воспользуемся скриптом Import_load для загруки в Rastrwin данных. Пока этот макрос работает через ключи запуска, то есть чтобы запустить скрипт, надо через консоль или через ярлык добавить к нему опции запуска. Для многих это будет неудобно, поэтому в ближайшее время постараюсь сделать либо графическое окно либо запуск через файл, то есть при запуске скрипта он будет искать текстовый файл с ключами либо файл ini c опциями.
Разберем все ключи, которые заложены на данный момент:
- -s выборка
- -h заголовок таблицы в файле csv
- -j столбцы, которые нужно импортировать
- -sf абсол. путь до файла/имя файла для множественной загрузки данных
- -f абсол. путь до файла/имя файла rastrwin для загрузки данных
- -fcsv абсол. путь до файла/имя файла csv для загрузки данных
- -t имя таблицы, куда надо импортировать
- -d разделитель данных в исходных данных через ключи -h, -j
- -dcsv разделитель данных в текстовых файлах csv
- -? справка
Для нашего примера ключи будут следующие
- -sf замена_ветвей.txt
- -t «vetv»
- -h «ip,iq,r,x,b»
- -j «r,x,b»
- -s «ip=%ip% & iq=%iq%»
Содержимое файла замена_ветвей.txt:
1 2 | схема1.rg2;izm_vetv1.csv схема2.rg2;izm_vetv2.csv |
Файл разделен на название файлов растра и файлов с данными
Указываем, что импорт надо осуществить в таблицу vetv (ветви)
указываем заголовок в файлах izm_vetv1.csv и izm_vetv2.csv
но импорт нужен всего лишь 3 столбцов, поэтому указываем только нужные поля
Для нашей задачи, для каждой новой ветви будут новые значения начала и конца, поэтому для каждой новой строчки переменные %ip% и %iq% заменятся на числа в файле csv. Для этого мы явно задали заголовок в файлах csv через ключ -h
Получилось следующее
После работы скрипта выводится сообщение об окончании работы и появляются новые файлы с припиской _patch, чтобы можно было восстановить из оригинала информацию.
Скачать скрипт import_loadv1.2.vbs и пример с использованием import_load_пример.zip