Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Марта 21, 2019, 04:15:38 am

Автор Тема: загрузка динамически изменяемого кол-ва полей  (Прочитано 829 раз)

Оффлайн destro_ker

  • Новичок
  • *
  • Сообщений: 7
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
источник exсel файл
в нем первые два поля постоянные, остальные добавляются периодически и таблица в экселе растет в ширину
как загрузку такого дела запилить в автоматизацию?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1272
  • Страна: ru
  • Рейтинг: +134/-0
    • Просмотр профиля
Привет.
Сложно, но можно.
Если нет вариантов по изменению этого процесса, стоит хотя бы договориться о неизменной строке, по которой можно будет судить о степени заполненности таблицы чтобы потом "колдовать" алгоритмом.
Либо просто грузить все по звездочке и уже разбираться с загруженным массивом.

Оффлайн destro_ker

  • Новичок
  • *
  • Сообщений: 7
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
А можно как-то загрузить определенное кол-во столбцов из источника?
Т.е. надо не load * и не явно указывать поля, а load first $(CountField) field
Просто щас нашел закономерность в структуре источника и стало понятно сколько нужно загружать полей
Это количество всегда естественно разное, но это значение понятно как рассчитать

Неофициальный форум пользователей QlikView & Qlik Sense


Оффлайн Валерий

  • Новичок
  • *
  • Сообщений: 31
  • Страна: ua
  • Рейтинг: +3/-0
    • Просмотр профиля
Привет!
Первые 2 поля постоянные... Я так понимаю, что-то вроде сводной таблицы, которая увеличивается вправо. А CrossTable не подходит?

Оффлайн destro_ker

  • Новичок
  • *
  • Сообщений: 7
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
Привет!
Первые 2 поля постоянные... Я так понимаю, что-то вроде сводной таблицы, которая увеличивается вправо. А CrossTable не подходит?
перед кросстэйблом надо понимать сколько полей загружать)

вопрос решил: Transpose() шапки, склеить поля в строку, потом load $(склееннаяшапка)

Оффлайн Иван

  • Наставник
  • **
  • Сообщений: 72
  • Страна: ru
  • Рейтинг: +15/-0
    • Просмотр профиля
    • Теория и практика QlikView
Нужно написать парсер, направление мысли можно посмотреть в статье https://qliksense.ivan-shamaev.ru/kak-rasparsit-fajl-excel-v-qlik-sense-po-polyam/
Суть: загружаются названия колонок, дальше склеивается так, как нужно. Пример приведен более сложный, но "как начать делать" можно глянуть.

Оффлайн Chernov

  • Новичок
  • *
  • Сообщений: 25
  • Страна: 00
  • Рейтинг: +7/-0
  • Qlik. Developer & Designer
    • Просмотр профиля
    • Личный блог про Qlik
Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...

Неофициальный форум пользователей QlikView & Qlik Sense


Оффлайн Иван

  • Наставник
  • **
  • Сообщений: 72
  • Страна: ru
  • Рейтинг: +15/-0
    • Просмотр профиля
    • Теория и практика QlikView
Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...

Ну мы же должны автоматизацией заниматься. Разархивировать вручную - не очень подходящий вариант.
Есть вариант установить odbc драйвер и подключиться к Excel и забрать из свойства листа название колонок. В моем случае был специфический пример, когда нужно к названию колонки префикс добавить (т.е. название колонки состоит из 2х строчек, причем 1я строка - объединенная ячейка). А пример привел сложный, т.к. просто был)

Оффлайн Chernov

  • Новичок
  • *
  • Сообщений: 25
  • Страна: 00
  • Рейтинг: +7/-0
  • Qlik. Developer & Designer
    • Просмотр профиля
    • Личный блог про Qlik
Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...

Ну мы же должны автоматизацией заниматься. Разархивировать вручную - не очень подходящий вариант.
Есть вариант установить odbc драйвер и подключиться к Excel и забрать из свойства листа название колонок. В моем случае был специфический пример, когда нужно к названию колонки префикс добавить (т.е. название колонки состоит из 2х строчек, причем 1я строка - объединенная ячейка). А пример привел сложный, т.к. просто был)

Но, есть Execute.... https://help.qlik.com/en-US/sense/November2018/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Execute.htm

Неофициальный форум пользователей QlikView & Qlik Sense