Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

23 Сентябрь 2021, 14:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как получить данные из .ini файла в ячейку calc файла  (Прочитано 6196 раз)
0 Пользователей и 1 Гость смотрят эту тему.
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Стартовое сообщение: 1 Апрель 2015, 06:04 »

Можно ли в Libreoffice по формуле или еще как-нибудь железно, не через макросы или еще что-то
1) Чтобы в ячейке всегда появлялось значение из .ini файла определенной секции и имени
2) Чтобы в libreoffice когда открыт в этой ячейки из .ini файла данные изменялись при изменении в .ini файле
« Последнее редактирование: 1 Апрель 2015, 06:06 от And589 » Записан
VlhOwn
Форумчанин
***
Offline Offline

Пол: Мужской
Расположение: Ростов-на-Дону
Сообщений: 1 076


« Ответ #1: 1 Апрель 2015, 08:46 »

С точки зрения Calc ini-файл - это обычный плоский текстовый (не odt) файл, не имеющий никакой внутренней разметки.
Соответсвенно - "не через макросы или еще что-то" - нельзя.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #2: 1 Апрель 2015, 10:21 »

... хотя, если очень извратиться, то, конечно, можно...
Вот только вопрос - а на пуркуа?

Суть изврата заключается именно в этой мысли -
С точки зрения Calc ini-файл - это обычный плоский текстовый (не odt) файл
Мы не раз уже обсуждали, как поступать с "обычными плоскими текстовыми файлами". Только речь обычно шла о csv-файлах. Не раз говорилось, что самый простой способ выдрать данные из такого файла - это присобачить его к текущей книге с помощью Вставка-Лист из файла и не забыть установить галочку Связь.
Не соглашусь с тезисом
файл, не имеющий никакой внутренней разметки.
Какая-никакая разметка все-таки есть - знаки равенства, разделяющие имя параметра и его значение, и квадратные скобки, выделяющие имя секции. Знаки равенства при импорте файла вполне могут разделить строки на две колонки.
То есть, нужно всосать данные из ini-файла в дополнительный (вспомогательный) лист, который можно и скрыть.
Затем идет муторная работа по конструированию формулы - "дай значение по имени параметра". Простой VLOOKUP мог бы помочь, если бы была гарантия, что параметры с одинаковыми именами не попадаются по несколько раз в разных секциях. Поэтому нужно помучиться с поиском нужной секции (через MATCH, например)  и подсовыванием в VLOOKUP диапазона ячеек уже с найденного заголовка секции (хоть INDIRECT, хоть OFFSET - по-барабану, и то, и то достаточно трудоёмко).
И в конце концов останется всего одна проблема - как обновить связь с исходным ini-файлом, если его содержимое внезапно изменилось.
И вся эта возня - ради чего?..
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #3: 1 Апрель 2015, 21:03 »

Цитата:
И вся эта возня - ради чего?
Просто все данные хранятся в .ini файле, а в calc формулы, в calc хранить данные не очень неудобно.
Цитата:
И в конце концов останется всего одна проблема - как обновить связь с исходным ini-файлом, если его содержимое внезапно изменилось.
Это тоже непонятно как сделать, как и то, как сделать, чтобы при запуска calc файла не предлагал обновить, а автоматически делал.
« Последнее редактирование: 1 Апрель 2015, 21:05 от And589 » Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 348



« Ответ #4: 2 Апрель 2015, 07:22 »

все данные хранятся в .ini файле, а в calc формулы, в calc хранить данные не очень неудобно.
это эпик-вин просто. давно стало данные хранить в кальке неудобно, а в спец-файлах для настройки - крайне удобно?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #5: 6 Апрель 2015, 22:32 »

Цитата:
это эпик-вин просто. давно стало данные хранить в кальке неудобно, а в спец-файлах для настройки - крайне удобно?
Как-то так получилось. Я раньше не программировал и скрипты не писал, но вроде calc тяжелей и медленней, чем стандартные небольшие файлы.

Можно еще вопрос, чтобы тему не создавать. Например есть список параметров в буфере обмена
111
222
333
444
555
Если добавлять в calc, он предлагает вопрос с разделением и еще что-то, есть ли готовые внутренние команды для calc, например
111 calc перенос строки
222 calc перенос строки
333 calc перенос строки
444 calc перенос строки
555
Чтобы сразу вставилось тоже самое, но в столбик
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #6: 7 Апрель 2015, 05:11 »

F2 -> Ctrl+V -> Enter?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #7: 8 Апрель 2015, 00:49 »

По другому. Например есть лист, вставка лист из файла, формат .ini. В calc документе лист имеет параметры с .ini файла. Но вопрос, почему вручную он обновляется, но автоматически предложено только серым цветом, и не выбирается, обновлять в определенно время, почему только вручную через Правка - Связи?
« Последнее редактирование: 8 Апрель 2015, 01:09 от And589 » Записан
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #8: 8 Апрель 2015, 22:15 »

Скажите пожалуйста, чисто оценочно, в calc есть кнопка Правка - Связи - Обновить - Закрыть. Можно ли макросом как-то прописать нажатие этого периодически, или для списка и кнопки нет ID и макросом нельзя прописывать нажатие кнопок внутренних окон?
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #9: 8 Апрель 2015, 22:17 »

Стоп! Макросом?
...или еще как-нибудь железно, не через макросы или еще что-то
Соответственно - "не через макросы или еще что-то" - нельзя.
Что-то изменилось в постановке задачи?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 112


iMac, LibreOffice и Apache OpenOffice


« Ответ #10: 8 Апрель 2015, 22:36 »

Что-то изменилось в постановке задачи?
Да так, мелочи, было железное условие, а стало резиновое Смеющийся
Записан

JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 764


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #11: 8 Апрель 2015, 22:40 »

Шикарно!
От значений из этого самого ini-файла зависят какие-то формулы на листе. Эти значения должны измениться сразу же после перезаписи ini-файла? Или могут потерпеть до "любого действия" на листе?

Почему спрашиваю... Сам макрос чтения файла и возврата указанного значения из секция/параметр элементарен. А вот механизм запуска может быть разным - от элементарного до супер-пупер навороченного (и при этом не всегда работающего  Смеющийся)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #12: 9 Апрель 2015, 11:47 »

Уже понял, что такой вариант неправильный. Если на связи (файл как источник на внешние данные с обновлением с 1 секунду) много ячеек, много памяти использует. Что за дикость. Если есть лист, где автоматически загружается таблица из файла, не больше пары десятков ячеек. Но LO постоянно в таком случае увеличивает расход памяти. Т.е. вообще постоянно, не выгружая прежние данные. Допустим, обновление каждую секунду по 30-50КБ увеличивается объем LO в памяти. Это же неправильно, и то что из файла принимаются и перезаписываются данные, даже если они те же без изменения и то, что постоянно увеличивается память.
Вопросы в теме не те начал задавать. Вот 2 конкретных вопроса.

1) Зачем так сделано? Можно ли как-то сбрасывать или настроить, чтобы прошлые данные не находились в памяти при постоянной связи с обновлением в 1 секунду?
2) Как называется функция, которая считывает в определенной ячейке первое значение и после изменения ячейки уже не переписывает свое значение. Например A1 = A2 по формуле. A2 без значения, потом A2 = 10, A1 тоже = 10, если A2 стало = 20, то A1 останется = 10. Не нахожу, вроде такая функция была в LO.
« Последнее редактирование: 9 Апрель 2015, 12:11 от And589 » Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 348



« Ответ #13: 9 Апрель 2015, 12:51 »

у вас в ЛО постоянно обновляются данные на основе связанного документа, в котором в свою очередь данные тоже обновляются? да еще с интервалом в 1 секунду? Чего же вы хотите от простого офисного пакета, который имхо на такое просто не рассчитан?
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
And589
Форумчанин
***
Offline Offline

Сообщений: 96


« Ответ #14: 9 Апрель 2015, 17:13 »

Цитата:
у вас в ЛО постоянно обновляются данные на основе связанного документа, в котором в свою очередь данные тоже обновляются? да еще с интервалом в 1 секунду? Чего же вы хотите от простого офисного пакета, который имхо на такое просто не рассчитан?
Все так, кроме одного. Конкретно данные в принимаемом файле не изменялись. А память все равно идет, уже больше гигабайта дошла. Даже после сохранения не сбрасывается.

А вышеописанная функция есть ли в Calc, кажется была, но не уверен, и найти не могу, по описаниям всех функций иду, что понял из описаний, не нашел нужной функции.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!