我想出了如何使用PowerShell脚本在Excel工作表中复制范围。我在变量中编写了该输出,以便稍后将其转换为JPEG。
我已经使用Excel应用程序& Windows.Forms.Clipboard
个方法(GetImage()
)。
现在我的问题是如何在PowerShell脚本中将当前剪贴板转换为JPEG。
我无法使用save方法转换剪贴板。 我的上一个命令看起来像这样:
$clipboard.Save("C:\Data\picture.jpeg")
$clipboard.Save(("C:\Data\picture.jpeg", "jpeg"))
$clipboard.Save("C:\Data\picture.jpeg", "jpeg")
这三种解决方案都不起作用。我总是得到变量 null 的错误。
在工作中我也不允许使用PowerShell版本5.因此,我也不能使用cmdlet Get-Clipboard
& Set-Clipboard
。
我知道可以将剪辑粘贴到绘画中,然后手动保存,但我不想自己做,但使用PowerShell脚本。
答案 0 :(得分:1)
使用[System.Windows.Forms.Clipboard::GetImage()
从剪贴板中提取图像,然后使用正确的格式参数调用图像对象的Save()
方法:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$file = 'C:\path\to\output.jpg'
if ([Windows.Forms.Clipboard]::ContainsImage()) {
$img = [Windows.Forms.Clipboard]::GetImage()
$img.Save($file, [Drawing.Imaging.ImageFormat]::Jpeg)
} else {
Write-Warning 'No image in clipboard.'
}
请注意,对于剪贴板访问工作,您必须在STA模式下运行(单线程公寓):
注意强>
Clipboard类只能在设置为单线程单元(STA)模式的线程中使用。要使用此类,请确保使用STAThreadAttribute属性标记 Main 方法。