我制作了一个AddIn for Excel(2016),它将打印区域保存为jpg文件。它工作好几个月。现在我收到越来越多的用户错误报告,都得到了同样的错误(如下图所示)。用户使用带有Excel 2013的Windows 7或带有Excel 2016的Windows 10,都有此错误。在第一次重新安装我的程序有帮助,但从现在开始它没有帮助。
这是我的代码:
public static void Save(string report, string area, RibbonControlEventArgs e)
{
Excel.Window window = e.Control.Context;
Excel.Worksheet sheet = ((Excel.Worksheet)window.Application.ActiveSheet);
Excel.Range range = sheet.Range[sheet.PageSetup.PrintArea];
range.CopyPicture(Excel.XlPictureAppearance.xlPrinter, Excel.XlCopyPictureFormat.xlPicture);
range.Copy(Type.Missing);
string fileName = @"\\server.company.lan\report.jpg";
if (Clipboard.GetDataObject() != null)
{
IDataObject data = Clipboard.GetDataObject();
Image image = (Image)data.GetData(DataFormats.Bitmap, true);
image.Save(fileName, ImageFormat.Jpeg);
}
}
答案 0 :(得分:3)
所有剪贴板访问必须使用STA线程运行。有很多方法可以做到这一点: