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

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

28 Май 2022, 00:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Автообновление графиков в презентации  (Прочитано 2025 раз)
0 Пользователей и 1 Гость смотрят эту тему.
MG
Новичок
*
Offline Offline

Сообщений: 1


« Стартовое сообщение: 20 Сентябрь 2021, 13:31 »

Привет! Есть шаблон презентации с большим кол-вом графиков. Данные от презентации к презентации меняются. Есть ли способ автоматически обновлять графики на основе таблиц, т.е. не руками?
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 676


« Ответ #1: 20 Сентябрь 2021, 15:59 »

Способ 1.
В шаблоне Impress - Таблица данных - меняем циферки, видим новые графики

Способ 2.
В Calc рисуем диаграммы по таблицам, экспортируем их в JPG/PNG макросом/расширением
В Impress вставлены связи с этими файлами, при открытии все обновляется само


PS Почему-то DDE тут не работает, а OLE будет  громоздко.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
kompilainenn
Мастер
*****
Offline Offline

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



« Ответ #2: 20 Сентябрь 2021, 17:25 »

Почему-то DDE тут не работает
Сломано с 7.0

OLE будет  громоздко.
Возможно человеку вообще нужно что-то странное
Записан

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

Сообщений: 1 676


« Ответ #3: 20 Сентябрь 2021, 22:07 »

По шагам (Способ 2 из #1):

1) Рисуем в книге Calc графики по табличкам, разбросанным на разных листах с говорящими именами. В идеале один лист - один график, но можно и несколько, они будут экспортированы с номерами, как ИмяЛиста_1.png итд.

Calc силен тем, что данные он может брать откуда угодно - из web, txt-файлов, excel-файлов, любых баз данных по Ctrl+Shift+F4 итд. И он эти данные при открытии обновляет, а при закрытии - сохраняет макросом в png-графику, огромным плюсом которой является прозрачный фон (альфа-канал). То есть такие графики могут вылетать анимацией из кромешной тьмы аки титры в звездных войнах.

2) В Calc жмем Alt+F11 - Создать (модуль) и вставляем в свободное место такой макрос (скорее всего чей-то, не помню чей и откуда, слегка дописал):
Код:
Sub ExportGraphs
    oDoc = ThisComponent
    Dim oSheet As Object
    Dim eSheets As Object
    Dim args(1) as new com.sun.star.beans.PropertyValue
    gef = CreateUnoService("com.sun.star.drawing.GraphicExportFilter")
    eSheets = oDoc.getSheets.createEnumeration()
    While eSheets.hasMoreElements
        oSheet = eSheets.nextElement()
        oDrawPage = oSheet.getDrawPage()
        iLimit = oDrawPage.getCount() -1
        For index = 0 to iLimit
            oDraw = oDrawPage.getByIndex(index)
            args(0).Name = "URL"
            args(0).Value = "file:///D:/ГрафикиПрезентаций/" & oSheet.getName & "_" & index+1 & ".png"
            args(1).Name = "MediaType"
            args(1).Value = "image/png"
            gef.setSourceDocument(oDraw)
            gef.filter(args)
        Next
    Wend
msgbox("Все " & index & " рисунка из книги Calc экспортированы" & chr(10) & "в папку D:/ГрафикиПрезентаций", 36)
End Sub

3) Закроем окно Basic

4) в Calc назначим автосрабатывание этого макроса на событие закрытия книги, чтобы не забывать сделать экспорт:  

Сервис - Настройка - События - Документ будет закрыт - Макрос - выбрать слева данную книгу, раскрыть Модуль, выбрать макрос ExportGraphs

5) Всё, можно пользоваться. При закрытии Calc выскочит окошко об экспорте. Графики будут в папке D:/ГрафикиПрезентаций/ - она создается сама, но можно указать в тексте макроса (в 2-х местах) любое другое место, в т.ч. облачную папку Я.Диска итп. Тогда презентация обновится у любого, кто имеет доступ к диску (удобно при работе в команде).

6) В презентации (при верстке) действуете как обычно: Вставка - Изображение - Связь - Открыть. Преза при открытии обновляется сама. То есть даже ваши клиенты будут всегда видеть "свежую" презентацию, если вы им дали доступ по ссылке (но тогда и вы при верстке должны вставлять картинки по ссылке, а не с D:/ГрафикиПрезентаций/).

Если что непонятно - см. вложенный примерчик. Макросы нужно разрешить, чтобы они выполнялись (полоска вверху, но её может и не быть, если макросы разрешены навечно).

« Последнее редактирование: 20 Сентябрь 2021, 22:59 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
eeigor
Опытный пользователь
***
Offline Offline

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


« Ответ #4: 21 Сентябрь 2021, 04:29 »

@economist, классный пример. Делал что-то подобное в Excel для школы, где после экспорта диаграмм презентация создавалась автоматически (без связей) – для администрации, а сами квартильные диаграммы – с успеваемостью каждого ученика на фоне класса – рассылались автоматически через MS Outlook всем родителям. Работает уже много лет. Вот теперь вижу, что и здесь такое возможно.
« Последнее редактирование: 21 Сентябрь 2021, 04:38 от eeigor » Записан

Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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