A
Ata
Hello,
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
"Bitmap").
// Code to check formats for clipboad data
IDataObject data = Clipboard.GetDataObject();
String[] arrayOfFormats = data.GetFormats(true);
Does anyone have any pointers?
Thanks,
Ajay.
ERROR
*****
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.
CODE
****
// Obtain an image stream in "results", which is Byte[]
MemoryStream MemStream = new MemoryStream(results);
DataObject d = new DataObject();
d.SetData(DataFormats.Bitmap, true, MemStream);
Clipboard.SetDataObject(d, true);
PowerPoint.Presentation ppt;
PowerPoint.Application pptApp;
PowerPoint.Slide slide;
pptApp = new PowerPoint.Application();
ppt = pptApp.Presentations.Add(MsoTriState.msoTriStateMixed);
slide = ppt.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutBlank)
slide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteDefault,MsoTriState.msoFalse,"",0,"",MsoTriState.msoFalse);
ppt.SaveAs("D:\\Ata\\test.ppt",
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoTrue);
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
"Bitmap").
// Code to check formats for clipboad data
IDataObject data = Clipboard.GetDataObject();
String[] arrayOfFormats = data.GetFormats(true);
Does anyone have any pointers?
Thanks,
Ajay.
ERROR
*****
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.
CODE
****
// Obtain an image stream in "results", which is Byte[]
MemoryStream MemStream = new MemoryStream(results);
DataObject d = new DataObject();
d.SetData(DataFormats.Bitmap, true, MemStream);
Clipboard.SetDataObject(d, true);
PowerPoint.Presentation ppt;
PowerPoint.Application pptApp;
PowerPoint.Slide slide;
pptApp = new PowerPoint.Application();
ppt = pptApp.Presentations.Add(MsoTriState.msoTriStateMixed);
slide = ppt.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutBlank)
slide.Shapes.PasteSpecial(PowerPoint.PpPasteDataType.ppPasteDefault,MsoTriState.msoFalse,"",0,"",MsoTriState.msoFalse);
ppt.SaveAs("D:\\Ata\\test.ppt",
PowerPoint.PpSaveAsFileType.ppSaveAsPresentation, MsoTriState.msoTrue);