Как загрузить CSV в переменные с названием столбцов?

lanzay

Client
Регистрация
09.03.2015
Сообщения
20
Благодарностей
2
Баллы
3
Универсальный загрузчик CSV.

В проекте есть переменные, в CSV есть колонки названные также как и переменные
Как загрузить значения в эти переменные? (опция: не найденные не заливаем)

Соответственно каждую новую строку опять заливаем в переменные и сними работаем.
Взять строку таблицы и закинуть ее в переменные не получается, т.к. колонки имеют названия A,B,C...
заголовки не тянуться из файла.

Конструкция вида {-Variable.myvariable_{-Variable.csv_a-}-} работает, но записать можно только в заранее обозначенную переменную, а тут нужно записать в переменную образованную подобной конструкцией.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113

lanzay

Client
Регистрация
09.03.2015
Сообщения
20
Благодарностей
2
Баллы
3
Респект Коллега!

во вложении результат = универсальное чтение CSV :-)

Было бы еще круто создавать переменные динамически (служебные по настройке шапки и для хранения заранее неизвестного количества колонок),
такое вообще возможно?
 

Вложения

  • 48,4 КБ Просмотры: 209
Последнее редактирование:

lanzay

Client
Регистрация
09.03.2015
Сообщения
20
Благодарностей
2
Баллы
3
И что-то у меня не получается с исключением
Все равно прерывается если переменную не завел

int i;
int col = Convert.ToInt32(project.Variables["count_col"].Value);
string pref = project.Variables["cfg_prefix"].Value;

for (i=1;i<=col;i++) {
//try {
var a = pref+project.Variables["csv_cfg_"+i].Value;
if (a!="") {
project.Variables[a].Value=project.Variables["csv_vol_"+i].Value;
}
//}
//catch (Exception ex) {}

}
 

Вложения

  • 51,6 КБ Просмотры: 181

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Так попробуйте:
Код:
int i;
int col = Convert.ToInt32(project.Variables["count_col"].Value);
string pref = project.Variables["cfg_prefix"].Value;
for (i=1;i<=col;i++)
{
try
    {
var a = pref+project.Variables["csv_cfg_"+i].Value;
if (a!="")
{
project.Variables[a].Value=project.Variables["csv_vol_"+i].Value;
}
    }
    catch(Exception ex){}
}
Собственно то же самое, что Вы писали, только без комментариев )
Проверил у себя - код выполняется.
 

lanzay

Client
Регистрация
09.03.2015
Сообщения
20
Благодарностей
2
Баллы
3
Да, я потом понял что у меня количество переменных с заголовком оказалось меньше чем фактических колонок в файле :-)

В итоге я переделал в более универсальный способ, НО!
Он оказался гораздо тормознее :(

Приходится перебирать колонки
Зато: переменных лишних нет вообще, размер может быть любым, запишутся только те переменные которые есть в проекте и никакой подготовительной работы.
 

Вложения

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)