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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 3 »   Вниз
  Печать  
Автор Тема: Картинка из ссылки  (Прочитано 13580 раз)
0 Пользователей и 1 Гость смотрят эту тему.
TroYReall
Новичок
*
Offline Offline

Сообщений: 8


« Стартовое сообщение: 24 Ноябрь 2011, 16:28 »

  Всем здрасти.
боюсь что без Вашей помощи никак не справлюсь, сегодня столкнулся с одной проблемой, получил в руки файл с двумя колонками в одном имя во втором ссылка на картинку в нашей любимой "паутине".
нужно сделать так чтобы либо вместо или рядом в другой колонке появились картинки из тех самых ссылок.
Т.е. мне чтобы прям в этой книге были и картинки и названия, строк очень много больше 400 отработать в ручную очень проблематично. Вариант сложить все картинки в папку тоже не подошел.
  Прошу помощи, поддержки в решении данной задачи.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 24 Ноябрь 2011, 16:55 »

И тебе здрасти! В смысле, добро пожаловать!  Смеющийся
А что за картинки-то? Эротика? Дал бы глянуть!
То есть, напрашивается конечно макрос, но так лень для его отладки тестовые данные готовить... Может, пристегнешь файл или его кусок к следующему сообщению?
Записан

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

Сообщений: 8


« Ответ #2: 24 Ноябрь 2011, 20:01 »

 Улыбка
да конечно, я оставил строк 5 для примера, макрос я думаю это единственный вариант, пытался уже что-то найти в сети но не удачно.

[вложение удалено Администратором]
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #3: 24 Ноябрь 2011, 20:26 »

О! Так с этим уже можно и работать... Жаль, что не эротика Лови!

[вложение удалено Администратором]
Записан

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

Сообщений: 189


« Ответ #4: 24 Ноябрь 2011, 21:04 »

Почему-то ошибка?


[вложение удалено Администратором]
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #5: 24 Ноябрь 2011, 21:11 »

Под каким офисом?
Записан

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

Сообщений: 189


« Ответ #6: 24 Ноябрь 2011, 21:15 »

OOo pro 3.3.0 (infra) - ошибка.

LibreOffice 3.4.4 - работает.
« Последнее редактирование: 24 Ноябрь 2011, 21:18 от neft » Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #7: 24 Ноябрь 2011, 21:25 »

А... Тогда понятно. Это свойство в LibreOffice есть. Кликаешь потом на картинку и она в браузере открывается.
Закомментировать эту строку, да и дело с концом... Или установить LO  Подмигивающий
Записан

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

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


« Ответ #8: 24 Ноябрь 2011, 22:31 »

Вот такой макрос заменит все ссылки на png, jpg, gif на картинки.

REM*****BASIC*****

Sub Main
   oDoc = ThisComponent
   oSheet = oDoc.CurrentController.ActiveSheet
   
   SD = oSheet.createSearchDescriptor()
   SD.SearchRegularExpression = TRUE
   SD.SearchCaseSensitive = FALSE
   SD.SearchString = "jpg|gif|png"
   Results = oSheet.findAll(SD)
   Dim Props(0) as new com.sun.star.beans.PropertyValue
   Props(0).Name= "URL"
   Dim Size as new com.sun.star.awt.Size
   oProvider = createUnoService("com.sun.star.graphic.GraphicProvider")
      
   For i=0 to Results.Count-1
      NameOfCell = Results(i).AbsoluteName
      Cell = oSheet.getCellRangeByName(NameOfCell)
      If Cell.supportsService("com.sun.star.table.Cell") then 'тогда это ячейка, а иначе это диапазон ячеек
         oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
         oSheet.DrawPage.add(oShape)
         Props(0).Value = Results(i).String
         'print Results(i).String
         oShape.Graphic = oProvider.queryGraphic(Props())
         'GlobalScope.BasicLibraries.loadLibrary("MRILib")
         w = oShape.Size.Width
         h = oShape.Size.Height
         wcl = Cell.Size.Width
         hcl = Cell.Size.Height

         Size.Width = wcl
         Size.Height = h*wcl/w
         If Size.Height > hcl then
            Size.Width = hcl*w/h
            Size.Height = hcl
         Endif
         oShape.setSize(Size)
         oShape.setPosition(Cell.Position)
         erase oShape
      Else
         'mri Cell
         r = Cell.Rows.Count-1
         c = Cell.Columns.Count-1
         For i=0 to r
         For j=0 to c
            oShape = oDoc.createInstance("com.sun.star.drawing.GraphicObjectShape")
            oSheet.DrawPage.add(oShape)
            Cellij = Cell.getCellByPosition(j,i)
            Props(0).Value = Cellij.String
            'print Cellij.String
            oShape.Graphic = oProvider.queryGraphic(Props())
            w = oShape.Size.Width
            h = oShape.Size.Height
            wcl = Cellij.Size.Width
            hcl = Cellij.Size.Height
   
            Size.Width = wcl
            Size.Height = h*wcl/w
            If Size.Height > hcl then
               Size.Width = hcl*w/h
               Size.Height = hcl
            Endif
            oShape.setSize(Size)
            oShape.setPosition(Cellij.Position)
            erase oShape
         Next
         Next
      Endif
   Next
End Sub


Тестовый файл:

[вложение удалено Администратором]
« Последнее редактирование: 24 Ноябрь 2011, 22:43 от Клио » Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Ветеран
*****
Offline Offline

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


« Ответ #9: 24 Ноябрь 2011, 22:38 »

Вот такой макрос заменит все ссылки на png, jpg, gif на картинки.
точнее не заменит, а добавит. А если нужно заменить, то там нужно добавить строчку после строчки Props(0).Value = Results(i).String:
Results(i).String = ""
и после строчки Props(0).Value = Cellij.String
строчку Cellij.String = ""
Записан

ubuntu 12.04 + LibO3.6.0
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #10: 24 Ноябрь 2011, 23:04 »

Душевно! Провайдер действительно эффективнее - чик и всё. И масштабирование с сохранением пропорций - тоже изящно.
Только URL перед записью в Props лучше бы все-таки проверить на наличие... А то ведь findAll найдет и подпись к рисунку "Это мы в формате gif"  Смеющийся
Записан

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

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


« Ответ #11: 24 Ноябрь 2011, 23:06 »

Ещё можно сохранить адрес файла и имя ячейки (к которой должна быть привязана картинка) в имени рисунка. Для этого нужно добавить строчки
oShape.Name = Props(0).Value +"##"+Cell.AbsoluteName ("##" - это разделитель, чтобы потом можно было использовать "Split(oShape.Name,"##")" )
после строк oShape.Graphic = oProvider.queryGraphic(Props())
Потом можно добавить макрос, который будет обновлять рисунки при изменении ширин и высот столбцов, т.к. информация о том, к какой ячейке привязан рисунок находится в имени самого рисунка.
Записан

ubuntu 12.04 + LibO3.6.0
Рыбка Рио
Ветеран
*****
Offline Offline

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


« Ответ #12: 24 Ноябрь 2011, 23:13 »

Только URL перед записью в Props лучше бы все-таки проверить на наличие...
Ага...
Записан

ubuntu 12.04 + LibO3.6.0
TroYReall
Новичок
*
Offline Offline

Сообщений: 8


« Ответ #13: 24 Ноябрь 2011, 23:35 »

вот это да, честно говоря я впечатлён, друзья примите много-кратную БЛАГОДАРНОСТЬ.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #14: 25 Ноябрь 2011, 09:10 »

Ну дык! (с) Митьки
Ты попал в хорошую компанию. Ежели что - обращайся!
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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