![]() |
![]() |
![]() |
|
Загрузка картинок из Экселя. Как? | ☑ | ||
---|---|---|---|---|
0
J_Silver
19.03.09
✎
23:31
|
Собственно сабж. Платформа 8.1.9
|
|||
1
Новичок
19.03.09
✎
23:37
|
(0) сто раз уже было...
Нужно поставить 4-й или 6-й парсер, а на итс 3-й |
|||
2
J_Silver
22.03.09
✎
18:54
|
(1)Извиняюсь, но что то в поиске не нашел. Если можно поподробнее. Повторюсь, интересует именно загрузка картинок. Буду очень благодарен за ссылки.
|
|||
3
prorokk
22.03.09
✎
20:11
|
(0) Инфы по теме маловато...
http://www.gotdotnet.ru/Forums/Data/104311.aspx Хоть и не про 1с... Но есть с чего начать))) Удачи Друг...))) |
|||
4
prorokk
22.03.09
✎
20:21
|
Проще сохраните этот документ как веб-страницу.
Все рисунки будут в папке "имя_страницы.files" но вот как их прицепить к Строчке? х.з. Они ведь не в ячейку вставлены а просто "Координаты"...((( |
|||
5
prorokk
22.03.09
✎
20:33
|
(1) а ты Вообще про что?
|
|||
6
prorokk
22.03.09
✎
22:30
|
и чего молим все?
|
|||
7
prorokk
22.03.09
✎
22:31
|
молчим)))
|
|||
8
J_Silver
22.03.09
✎
22:34
|
Нашел такой код
MyPath = "C:\1.xls"; MyList = "Лист1"; myOlApp = Новый COMОбъект ("excel.Application"); MyWo= myOlApp.Workbooks.Open(MyPath, , True); MySheet=MyWo.Worksheets(MyList); Для Каждого MyPic Из MySheet.Pictures Цикл MyShape=MySheet.Shapes(MyPic.Name); MyShape.CopyPicture(); Сообщить(Строка(MyPic.Name)+" " + Строка(MyPic.BottomRightCell.Column) + " " +Строка(MyPic.BottomRightCell.Row)); КонецЦикла; MyWo.Close(False); |
|||
9
J_Silver
22.03.09
✎
22:35
|
Но как вытащить тип "Картинка". Непонятно...
|
|||
10
prorokk
22.03.09
✎
22:38
|
(8) а где нашел Ссылочку не дашь?
|
|||
11
prorokk
22.03.09
✎
22:42
|
(10) нашел)))
|
|||
12
J_Silver
22.03.09
✎
23:54
|
что толку. Как картинку получить то? У меня несколько вариантов. Либо как то копать через com объекты, либо как то по хитрому сохранить в файл. Может средствами потокового ввода-вывода... А может я уже загонять начинаю...
|
|||
13
J_Silver
23.03.09
✎
09:59
|
|
|||
14
manyak
23.03.09
✎
10:14
|
сохраняй в каталогвременных файлов - потом из него в 1с грузи
|
|||
15
J_Silver
25.03.09
✎
13:03
|
(14) Спасиб. Эт я догадался. Вопрос в том как средствами 1С сохранить картинку из экселя в файл. (Через буфер обмена у меня не получается)
|
|||
16
J_Silver
25.03.09
✎
22:12
|
|
|||
17
H A D G E H O G s
25.03.09
✎
22:14
|
Бери из Буфера напрямую.
|
|||
18
H A D G E H O G s
25.03.09
✎
22:17
|
В Нетленке это реализовано ©
Только по отзывам одного товарища, там когда больше 14 картинок - гляки какие-то. Я этого смоделировать не смог :-( |
|||
19
viktorovichvadim
25.03.09
✎
23:01
|
тебе поможет cClipBoardObject.dll. Однозначно
|
|||
20
J_Silver
26.03.09
✎
19:33
|
(17)Не помогает! Пробовал Нетленку.
Когда копирую/вставляю - пишет "В буфере нет картинки". Тип того, что в буфере - не картинка. Именно потому, что копирую из экселя. Пробовал скопировать из Экселя, втавить в Paint, тут же скопировать из paint в буфер и загрузить из него в 1С - все работает. Но напрямую - никак... |
|||
21
J_Silver
27.03.09
✎
22:37
|
|
|||
22
Ужас бухгалтера
27.03.09
✎
23:11
|
(21) Можно Йокселем загрузить документ из Excel, а потом использовать метод ИзвлечьКартинки:
http://yoksel.net.ru/ComServer/Ob%27ekty/TablichnyjjDokument/ExtractPictures Все внедренные картинки сохраняются в указанный каталог. Но, естественно, не остается никаких сведений об их расположении в документе. |
|||
23
Ужас бухгалтера
27.03.09
✎
23:21
|
Хе, похоже, решение есть. Йокселем не извлекаем картинки, а сохраняем лист Excel в формате 1С 7.7. Далее открываем этот файл через штатный объект "ТабличныйДокумент" и через свойство "Рисунки" вытаскиваем все, что нужно. Там для каждой картинки есть ее координаты плюс есть возможность получить из нее стандартный объект "Картинка".
|
|||
24
Ужас бухгалтера
27.03.09
✎
23:27
|
Хм, хотя нет... Координаты у картинки совсем бесполезные... :((
|
|||
25
J_Silver
31.03.09
✎
13:27
|
Подсказали макрос, сохраняющий выделенную картинку в файл
Sub inFail() Dim str As String, strFiNa As String, strShNa As String, lH As Long, lW As Long Dim SStime As Long str = ActiveSheet.Name If TypeName(Selection) = "Picture" Then strFiNa = Application.GetSaveAsFilename(InitialFileName:="NewPicture", FileFilter:="GIF файл,*.gif,JPG файл,*.jpg") If strFiNa = "False" Then Exit Sub lH = Selection.Height lW = Selection.Width Selection.Copy Charts.Add ActiveChart.Location Where:=xlLocationAsObject, Name:=str strShNa = ActiveChart.Name strShNa = Trim(Replace(strShNa, str, vbNullString)) ActiveSheet.Shapes(strShNa).Height = lH * 1.01 ActiveSheet.Shapes(strShNa).Width = lW * 1.01 DoEvents ActiveChart.Paste ActiveChart.Export Filename:=strFiNa, FilterName:=Right(strFiNa, 3) ActiveSheet.Shapes(strShNa).Delete End If End Sub (Спасибо, Г.Т.) Слышал, что у Excel.aplication есть какой то метод Run() или что-то такое, который выполняет определенный макрос. Соответственно, если в качестве параметра макросу передавать по очереди каждую картинку (допустим координаты), он ее во временный файл, а из него в 1С. Тк код сохранения в файл уже есть, надо только присобачить к нему параметр, для передачи картинки и разобраться, как его запускать под 1С. К сожалению "знания VBA" = 0. Очень надеюсь на Ваши подсказки. |
|||
26
viktorovichvadim
02.04.09
✎
17:48
|
сказано же тебе, тебе поможет cClipBoardObject.dll. если хочешь мучиться дальше -вперед. загугли cClipBoardObject.dll и будет тебе счастье
|
|||
27
J_Silver
03.04.09
✎
13:49
|
(26) Загуглил. Гуглил долго и мучительно. Нашел.:)))
На выходных опробую. Спасибо за наводку. |
|||
28
J_Silver
05.04.09
✎
23:25
|
(26)Блин. Устал от поисков.
Насколько я понял, этот файл входит в состав дополнения к QTP, называемого QT Plus. Из тех ссылок, что я нашел, говорится, что он должен быть в комплекте к основной поставке. Я уже перекачал на сайте НР все возможные версии и дополнения к ним. Там этого файла нет. Ссылок на упоминаемый "сайт mercury" не смог найти. Хотя и упоминается, что они должны быть. Может руки не оттуда растут, но если кто поможет найти ClipBoardObject.dll - буду черезвычайно счастлив. Потому КАК использовать его - понятно. |
|||
29
Ужас бухгалтера
05.04.09
✎
23:46
|
(28) Если не сложно, опиши, как должна решаться твоя задача в "идеальном" виде. Т.е. как должно выглядеть средство, решающее твою задачу.
|
|||
30
J_Silver
06.04.09
✎
00:25
|
Все. Нашел. http://infostart.ru/projects/2950/
Решение в идеальном виде. В (28) сплошной гон. Я гуглил "ClipBoardObject.dll" , а оно "cClipBoardObject.dll". Позволяет принимает картинки, скопированные из Экселя в буфер. (Кстати если копировать не из него, а из paint - не работает) Viktorovich'у респект. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |