Сохранить изображение в буфер обмена .jpg

У меня есть несколько отчетов Excel и необходимо экспортировать выбранные диаграммы в качестве изображений в качестве первого шага. Затем мне нужно импортировать эти изображения в презентацию PowerPoint. Кажется, я почти там, но застрял.

  1. Я пытаюсь получить все диаграммы листа с помощью метода chartObjects (я пробовал с диаграммой методов, но тогда моя коллекция была пуста).

Затем я копирую выбранную диаграмму как изображение в буфер обмена (когда это будет работать, я буду использовать forEach, чтобы получить все диаграммы моей книги).

Однако, когда я пытаюсь сохранить данные Clipboard, кажется, что там нет изображений, а есть данные.

$xl = new-object -c excel.application $xl.displayAlerts = $false $xl.visible = $false $wb = $xl.workbooks.open($fileData) $ws= $wb.sheets.Item("Sheet1") $chartCollect = $ws.chartObjects() $chartToExport = $chartCollect.Item(3) $toClipboard = $charToExport.copyPicture() $e=[System.Windows.Forms.Clipboard]::GetDataObject() if ($e -eq $null) { Write-Host "there is no data" } $img =$e.GetImage() if ($img -eq $null) { Write-Host "there is no picture" } $img.save("Path\test.jpg", "jpg") # I tried using the export method, but it does not exist with chartObjects $a = $chartToExport.Export("Path\test.gif", "GIF") 
  1. Пропустив шаг 1, я попытался отправить данные буфера обмена непосредственно в презентацию PowerPoint, которая работает.

Однако я не могу поместить импортированную картинку по своему желанию. Я попытался в то же время импортировать изображение для папок, и у меня тогда нет проблем с их позициями.

  $pptx = "Path\Presentation.pptx" $pt = New-Object -ComObject powerpoint.application $presentation = $pt.Presentations.open($pptx) $slide2 = $presentation.slides.item(2) $slide3 = $presentation.slides.item(3) # Paste the Clipboard chart into the PowerPoint presentation. # Works OK, but I do not success to place where I wish $shape2 = $slide2.shapes.paste() $shape2.Left = 10 # Does not work $shape2.Top = 10 # Does not work # Test on existing picture, Works OK $imgTest = "Path\picture.jpg" $LinkToFile = $msoFalse $SaveWithDocument = $msoTrue $Left = 10 $Top = 10 $Width = 10 $Height = 10 $shape3 = $slide3.shapes.addPicture($imgPath, $LinkToFile, $SaveWithDocument,$Left, $Top, $Width, $Height) 

Кто-нибудь знает, как решить одну или обе эти проблемы?

Я узнал, что вставка буфера обмена в 2) импортирует файл .emf. Я попытался сыграть с методом .copyPicture в 1), чтобы экспортировать формат .jpg, но безуспешно. (используя: описание метода copyPicture )

Я также попытался выполнить метод incrementLeft и incrementTop, чтобы изменить положение импортированного файла .emf, но безуспешно (используя метод incrementLeft ). Ошибка: исключение вызывает «incrementLeft» с аргументом «1»: исключение из HRESULT: 0x800A01A8

Кто-нибудь знает, как решить вышеуказанные 2 проблемы?

Во всяком случае, я придумал решение, а не красивое, но которое работает пока до лучшего.

Решение для 2:

Прежде чем импортировать изображение в буфер обмена, я дублирую целевой слайд.

Затем я импортирую буфер обмена, а затем экспортирую файл .emf в файл .jpg.

Я удаляю дублированный слайд и импортирую вновь созданный файл .jpg. Затем мне удалось изменить положение импортированного .jpg, в то время как я не мог сделать это с объектом .emf.

  $slide2 = $presentation.slides.item(2) $slide2Dup = $slide2.duplicate() $shape2 = $slide2Dup.shapes.paste() $a= $shape2.export("Path\export.jpg", $ppShapeFormatJPG) $slide2Dup.delete() $imgPath = 'Path\export.jpg' $LinkToFile = $msoFalse $SaveWithDocument = $msoTrue $Left = 10 $Top = 10 $Width = 10 $Height = 10 $shape2 = $slide2.shapes.addPicture($imgPath, $LinkToFile, $SaveWithDocument,$Left, $Top, $Width, $Height) 

В то же время я получаю папку, полную файла .jpg, соответствующую диаграмме excel, поэтому 1) как-то решается.

  • Powerpoint внутри диаграмм, связанных с Excel, не обновляет путь автоматически
  • Установка руководства X Значения в Excel VBA для xlLineMarkers
  • EPPlus - Как добавить «Серии строк» ​​в сводной диаграмме (Столбец)
  • Я хотел бы, чтобы даты отображались на оси X, а цветная категория отображалась на оси Y, Excel
  • Создание зависимого от траектории градиента на линии Trendline в Excel 2011
  • Сомнения в создании диаграмм в Excel из Delphi
  • Схема Powerpoint для сравнения относительной ссылки
  • Получить ссылку из серии графов
  • Диаграмма Excel Powershell - получение серии данных из существующей диаграммы
  • Макросписанный VBA не создает одинаковый граф столбцов
  • Определить событие VB Excel.Chart, которое всегда работает?
  • Давайте будем гением компьютера.