gpt4 book ai didi

c# - 如何在 C# 中不使用剪贴板从 Excel 保存图像?

转载 作者:太空狗 更新时间:2023-10-29 17:28:37 24 4
gpt4 key购买 nike

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

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

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

有没有办法在不使用剪贴板的情况下将 Excel.Shape 直接解析为位图(或任何图像格式)?似乎一定有办法,因为 Shape.CopyPicture 方法能够以图像格式将其发送到剪贴板。否则,有没有办法在不重复的情况下做类似于数字 2 的事情?我更喜欢避免使用第 3 方库的解决方案。

谢谢。

最佳答案

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

手动尝试。了解这一点后,就可以通过为此编写 C# 程序来轻松实现自动化。

关于c# - 如何在 C# 中不使用剪贴板从 Excel 保存图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com