我如何保存图像从Excel不使用剪贴板,在c#

本文关键字:剪贴板 Excel 何保存 保存 图像 | 更新日期: 2023-09-27 18:03:30

我对此进行了相当广泛的研究,但还没有找到我想要的东西。我找到的两种方法是

1:使用Microsoft.Office.Interop。Excel,遍历工作簿的形状,然后将图像复制到剪贴板,然后将剪贴板数据放入位图中,最后保存该位图。这种方法的问题在于剪贴板。我们希望在多线程环境中使用它,并且担心线程之间的剪贴板问题。我们宁愿不处理剪贴板锁定。

2:将文件保存为. html文件,然后从创建的保存文档的"_files"文件夹中获取图像。这样做的问题是,每个图像创建了两个图像(1个高分辨率,1个低分辨率),并且没有很好的方法来确定哪些图像是低分辨率,哪些图像是高分辨率,因为它们都命名为image###,有些文件将它们列出高,低,高,低,而有些文件将它们列出高,低,高,低。使用所有这些文件很慢,而且占用空间,这不是理想的。我可以通过宽高比检查图像,但这显然不是很好,因为多个图像可能具有相同的宽高比。

是否有一种方法来解析Excel。形状直接作为位图(或任何图像格式)不使用剪贴板?看起来一定有办法,因为形状。CopyPicture方法能够以图像格式将其发送到剪贴板。否则,是否有一种方法可以做类似于第2条的事情而不会得到重复?我更喜欢一个避免使用第三方库的解决方案。

谢谢。

我如何保存图像从Excel不使用剪贴板,在c#

我假设您使用Excel 2007/2010格式。每个Excel 2007/2010文件都是一个zip文件!因此,只需将文件Excel.xlsx重命名为Excel.zip。然后将文件解压缩到一个文件夹中。图片在'/xl/media'文件夹中。

手动尝试。知道了这一点,很容易通过编写c#程序来实现自动化。