我正在使用 Office 2007 PIA 将使用 VS2008 编写的现有插件转换为使用 NetOffice 更通用的插件。
一切似乎都可以使用 netoffice 框架编译(带有一些小的代码修补)
但我的问题是,从 word doc 中复制内联形状的唯一方法是使用剪贴板,而在 netoffice 示例中,我的剪贴板值总是为空。在谷歌上阅读似乎这与剪贴板的线程问题有关。基本上我的代码代码发生了变化,所以我只能假设它与 Netoffice 如何创建它的代理有关。
有人可以帮忙吗?
void commandBarBtn_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
{
string str = _wordApplication.ActiveDocument.Content.Text;
MessageBox.Show(str);
try
{
int count = _wordApplication.ActiveDocument.InlineShapes.Count;
for (int i = 0; i < count; i++)
{
//Clipboard.Clear();
Word.InlineShape shape = _wordApplication.ActiveDocument.InlineShapes[i + 1];
shape.Select();
_wordApplication.Selection.CopyAsPicture();
IDataObject data = Clipboard.GetDataObject(); //always returns null. help!
if (data.GetDataPresent(DataFormats.Bitmap))
{
Bitmap bmp = (System.Drawing.Bitmap)data.GetData(DataFormats.Bitmap);
string filename = String.Format(@"c:\image{0}.bmp", i.ToString());
bmp.Save(filename);
}
//Application.ActiveDocument.InlineShapes
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Ctrl.Dispose();
}