Posted 03 December 2004 - 01:04 AM
I am trying to copy the contents of the output of SQL Reporting Services to
a PowerPoint slide. For this, I am using SQL Reporting Services to obtain an
IMAGE stream, which I paste to the Windows clipboard. Then, using automation,
I am trying to copy this information from the clipboard to a PowerPoint
slide. However, I get an error at slide.Shapes.PasteSpecial.
I am able create a System.Drawing.Bitmap object from the memory stream that
I associate with the image stream. I can also copy an image fragment that I
clipped in MSPaint (which means it's on the clipboard) to PowerPoint using
Automation. And if I generate a CSV stream from Reporting Services, I can
copy this to the clipboard and from there to Excel. It's only that I don't
seem to be able to copy anything from the clipboard to PowerPoint if I pasted
it to the clipboard using the MemoryStream. Also, using the following code,
I find that the clipped data from MSPaint supports 4 formats ("Embed Source",
"Object Descriptor" , "MetaFilePict", and "DeviceIndependentBitmap") but the
data I copy from the MemoryStream has only 2 ("System.Drawing.Bitmap" and
// Code to check formats for clipboad data
IDataObject data = Clipboard.GetDataObject();
String arrayOfFormats = data.GetFormats(true);
Does anyone have any pointers?
An unhandled exception of type 'System.Runtime.InteropServices.COMException'
occurred in WindowsApplication2.exe
Additional information: Shapes (unknown member) : Invalid request.
Clipboard is empty or contains data which may not be pasted here.
// Obtain an image stream in "results", which is Byte
MemoryStream MemStream = new MemoryStream(results);
DataObject d = new DataObject();
d.SetData(DataFormats.Bitmap, true, MemStream);
pptApp = new PowerPoint.Application();
ppt = pptApp.Presentations.Add(MsoTriState.msoTriStateMixed);
slide = ppt.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutBlank);