【发布时间】:2009-09-10 14:52:24
【问题描述】:
我的 excel 文件中有图像,需要手动提取。我编写了一个程序,它对使用 Excel 2007 的用户非常有效,但不适用于 Excel 2003。
过程: 用户打开 Excel 文件,将相关图像复制到剪贴板 用户打开 C# 应用程序,单击从剪贴板收集图像的按钮,然后从用户那里收集其他信息。
应用程序代码非常简单。单击按钮时,将调用以下代码:
if (Clipboard.GetImage() != null)
{
pictureBox1.Width = Clipboard.GetImage().Width;
pictureBox1.Height = Clipboard.GetImage().Height;
pictureBox1.Image = Clipboard.GetImage();
//...more misc. code...
}
这在 Excel 2007 中完美运行,但在 Excel 2003 中不起作用。
我尝试了以下调试代码,但都失败了:
Clipboard.ContainsImage() >> 返回 false Clipboard.GetDataObject().GetDataPresent(DataFormats.Bitmap) >> false
一个想法是 Excel 2003“Office 剪贴板”可能会干扰?但是,MS PAINT 粘贴图像没有问题。
帮助?
【问题讨论】:
-
进一步研究表明,如果用户按住 shift 键,然后选择编辑 > 复制图片,然后选择“复制为位图”,而不是“复制为图片”,则现有代码将起作用。这就提出了一点——似乎默认的“复制”使用“复制为图片”。如何从剪贴板访问“图片”?
标签: c# excel office-2003