Что нового

Сохрание таблици Excel из буфера в графическом формате файла

koshnv

Новичок
Сообщения
6
Репутация
0
Добрый день, буду благодарен за помощь, запнулся об простую вещь.
В буфере обмена находится скопированная из Execl таблица, не могу сохранить ее как изображение в файл. Операция не получается даже если выбрать копировать таблицу как картинку в самом Excel. С текстовым форматом проблем нет.
Вот мой пример, как я понимаю функция FileWrite тут не работает с графическими файлами.
Код:
$hFile = FileOpen("test.bmp", 1)
; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf
;Сохраняю в файл таблицу из буфера обмена
FileWrite($hFile, _ClipBoard_GetData($CF_BITMAP))

FileClose($hFile)
 

ildar

Осваивающий
Сообщения
252
Репутация
30
с графикой
Код:
_GDIPlus_ImageSaveToFile
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Вы реально думаете, что вот так просто без преобразований сможете сохранить текст в картинку? :blink:
 
Автор
K

koshnv

Новичок
Сообщения
6
Репутация
0
Medic84 сказал(а):
Вы реально думаете, что вот так просто без преобразований сможете сохранить текст в картинку? :blink:
В Excel, есть возможность изначально в меню выбрать команду "Копировать как рисунок", вопрос только в том, что именно помещает в буфер Excel.

Если не трудно, поясните какие этапы преобразования вы имеете в виду? Из txt в графику?
 

InnI

AutoIT Гуру
Сообщения
4,982
Репутация
1,460
koshnv
что именно помещает в буфер Excel
Excel 2010 при выборе "Копировать как рисунок...":
"Как на экране" - "Векторный" и "Как на печати"
Код:
ID 14 : Enhanced Metafile
ID 3 : Metafile Picture
ID 49615 : Link
"Как на экране" - "Растровый"
Код:
ID 2 : Bitmap
ID 8 : DIB
ID 17 : DIB V5
ID 49615 : Link


Добавлено:
Сообщение автоматически объединено:

Medic84
без преобразований <...> сохранить текст в картинку
Если Excel открыт, то обычное копирование приводит к тому, что в буфер обмена помещается в том числе и CF_BITMAP
Код:
ID 49161 : DataObject
ID 14 : Enhanced Metafile
ID 3 : Metafile Picture
ID 2 : Bitmap
ID 49641 : Biff12
ID 49616 : Biff8
ID 49618 : Biff5
ID 4 : SYLK
ID 5 : DIF
ID 49639 : XML Spreadsheet
ID 49416 : HTML Format
ID 13 : Unicode Text
ID 1 : Text
ID 49619 : Csv
ID 49506 : Hyperlink
ID 49327 : Rich Text Format
ID 49163 : Embed Source
ID 49156 : Native
ID 49155 : OwnerLink
ID 49166 : Object Descriptor
ID 49165 : Link Source
ID 49167 : Link Source Descriptor
ID 49615 : Link
ID 129 : Private Text
ID 49154 : ObjectLink
ID 49171 : Ole Private Data
ID 16 : Locale
ID 7 : OEM Text
ID 8 : DIB
ID 17 : DIB V5
А вот если Excel закрыть, то в БО останутся только текстовые форматы
Код:
ID 49327 : Rich Text Format
ID 13 : Unicode Text
ID 16 : Locale
ID 1 : Text
ID 7 : OEM Text

koshnv
сохранить ее как изображение в файл
Также, как и обычный скриншот, но либо при открытом Excel, либо после копирования в виде картинки с выбором "Как на экране" - "Растровый"
Код:
#Include <ClipBoard.au3>
#Include <GDIPlus.au3>

$sFile = @ScriptDir & "\scr.bmp"

_ClipBoard_Open(0)
$hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)
_ClipBoard_Close()
If Not $hBitmap Then Exit ConsoleWrite("Формат не найден" & @CRLF)

_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$Result = _GDIPlus_ImageSaveToFile($hImage, $sFile)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
 
Автор
K

koshnv

Новичок
Сообщения
6
Репутация
0
InnI сказал(а):
Если Excel открыт, то обычное копирование приводит к тому, что в буфер обмена помещается в том числе и CF_BITMAP
Благодарю, все точно сформулировано.
Excel будет отрыт, буду вешать кнопку. В принципе оба варианта подходят.
 
Верх