Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 09.10.2019, 15:49   #1
dunakov
Новичок
Джуниор
 
Регистрация: 09.10.2019
Сообщений: 9
Репутация: 10
По умолчанию Выдрать имя изображения из ячейки

Добрый день. Скинули мне Excel файл где в столбике стоят картинки. Картинки сами я сохранил путём сохранения в html формат. Но теперь мне нужно чтобы эти картинки либо преобразовать в их имена чтобы вместо картинок было имя картинки, либо создать рядом столбец с именем каждой картинки. Как вот получить имя картинки, которая находится в ячейке Excel ?
dunakov вне форума   Ответить с цитированием
Старый 09.10.2019, 16:00   #2
dunakov
Новичок
Джуниор
 
Регистрация: 09.10.2019
Сообщений: 9
Репутация: 10
По умолчанию

Отыскал такой код.
Код:
Sub CheckImageName()
    Dim pic                   As Excel.Picture

    For Each pic In ActiveSheet.Pictures

        pic.TopLeftCell.Offset(, 2).Value2 = pic.Name
    Next pic
End Sub
Названия оно вставляет. Вроде всё норм, но сами номера картинок почему то сильно отличаются от тех которые были выгружены импортом в html.

Если в папке импортом картинка называется image1023.png

То почему то название у неё Picture 453 например. Т е совсем другой порядковый номер. Это странно что ли
dunakov вне форума   Ответить с цитированием
Старый 09.10.2019, 16:12   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

пример файла (желательно не большого размера) можно увидеть?

а в чём смысл этих манипуляций? Зачем Вам имена картинок (тем более тех, что выгружены в HTML) ?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 09.10.2019, 16:41   #4
dunakov
Новичок
Джуниор
 
Регистрация: 09.10.2019
Сообщений: 9
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
пример файла (желательно не большого размера) можно увидеть?

а в чём смысл этих манипуляций? Зачем Вам имена картинок (тем более тех, что выгружены в HTML) ?
Смысл того, что я буду данные перегружать в MySQL базу данных. А импорт в MySQL видит картинку как пустое поле. Поэтому в базе данных должно храниться название картинки.

Чуть позже сделаю примерный файл
dunakov вне форума   Ответить с цитированием
Старый 09.10.2019, 16:44   #5
dunakov
Новичок
Джуниор
 
Регистрация: 09.10.2019
Сообщений: 9
Репутация: 10
По умолчанию

Вот
Вложения
Тип файла: xlsx test.xlsx (238.0 Кб, 3 просмотров)
dunakov вне форума   Ответить с цитированием
Старый 09.10.2019, 17:40   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

Цитата:
Картинки сами я сохранил путём сохранения в html формат
после этого, картинки никак не сопоставить с ячейками, в которых они хранились

Подробнее об этом написал здесь: (способ 4)
https://excelvba.ru/programmes/Paste...ort/HowItWorks
EducatedFool вне форума   Ответить с цитированием
Старый 09.10.2019, 18:26   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Подробнее об этом написал здесь: (способ 4)
Отличная статья.

я в своё время побился, понял, что создатели Excel плевать хотели на тех, кто хочет реальный экспорт (хотя не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи).


Цитата:
Сообщение от dunakov Посмотреть сообщение
Картинки сами я сохранил путём сохранения в html формат.
Так делать НЕЛЬЗЯ. Вот просто нельзя и всё. я мог бы расписать, почему нельзя, но в этом нет необходимости.

имхо, реально действующий способ только один:
рассматривать XLSX файл как ZIP архив.
все картинки лежат в папке
\xl\media
скопировать их легко (просто распаковать из архива)

сложнее, когда нужно привязать картинки к данным на листе.
нужен разбор XML файлов

для XLSX файла с одним листом связи, описывающие файлы лежат здесь
\xl\drawings\_rels\drawing1.xml.rel s


связь ID графических файлов с изображениями на листе описана в файле
\xl\drawings\drawing1.xml

Здесь подобное - https://geekquestion.com/3332591-exc...enij-na-liste/


А вот здесь решается подобная задача
https://infostart.ru/public/699042/
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 09.10.2019, 21:53   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,840
Репутация: 1286

skype: ExcelVBA.ru
По умолчанию

Цитата:
не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи
принципиальной сложности, конечно, нет
но нюансов много

начиная с того, что там не всегда 2 файла XML надо анализировать, - этих файлов может быть больше, и заканчивая повторяющимися ID картинок (у одной картинки несколько разных атрибутов ID - т.е. имеем невалидный XML)
Т.е. сложность вся только в частных случаях, когда делаешь универсальное решение для разных файлов с картинками.
EducatedFool вне форума   Ответить с цитированием
Старый 09.10.2019, 23:41   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,090
Репутация: 5656
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
принципиальной сложности, конечно, нет
но нюансов много
не-не-не. Вы меня не поняли.
я сейчас не про нас, я про компанию Microsoft. Программисты, которые разрабатывают MS Excel (а это большая банда) знают все структуры и для них эта задача (корректный экспорт файлов с указанием привязки картинок к листам) не должна составлять никакой сложности.
Вот почему нет таких встроенных средств в Excel мне не понятно.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 10.10.2019, 09:38   #10
dunakov
Новичок
Джуниор
 
Регистрация: 09.10.2019
Сообщений: 9
Репутация: 10
Печаль

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Отличная статья.

я в своё время побился, понял, что создатели Excel плевать хотели на тех, кто хочет реальный экспорт (хотя не понимаю, в чём здесь принципиальная сложность, реализовать Способ №3 из вашей статьи).



Так делать НЕЛЬЗЯ. Вот просто нельзя и всё. я мог бы расписать, почему нельзя, но в этом нет необходимости.

имхо, реально действующий способ только один:
рассматривать XLSX файл как ZIP архив.
все картинки лежат в папке
\xl\media
скопировать их легко (просто распаковать из архива)

сложнее, когда нужно привязать картинки к данным на листе.
нужен разбор XML файлов

для XLSX файла с одним листом связи, описывающие файлы лежат здесь
\xl\drawings\_rels\drawing1.xml.rel s


связь ID графических файлов с изображениями на листе описана в файле
\xl\drawings\drawing1.xml

Здесь подобное - https://geekquestion.com/3332591-exc...enij-na-liste/


А вот здесь решается подобная задача
https://infostart.ru/public/699042/
Распаковал я картинки через архив - та же шляпа. Не соответствие названиям картинок в ячейке Допустим называется картинка Рисунок 1300, а в папке она уже image 482 . + Картинок вместо 1187 стало 486
dunakov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление изображения в примечание ячейки из буфера обмена cent Microsoft Office Excel 11 05.08.2019 21:02
Импорт изображения из ячейки на форму airin078880 Microsoft Office Excel 1 22.11.2012 01:43
Выдрать переменную из JSON denis7656 PHP 12 27.04.2012 17:14
как из этого БПФ выдрать частоту sniper70 Общие вопросы Delphi 0 16.01.2011 10:17
Как выдрать из текста вес ??? kakawkin Общие вопросы Delphi 2 18.10.2010 20:08


14:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.