Tengo una pagina aspx que sigue el siguiente proceso para generar un informe de Word, uso las PIAS Interop de Office:
- Abro un libro de Excel
- Abro un documento de Word a partir de una plantilla .dot
- Cojo el area de impresión de cada una de sus hojas y copio en el portapapeles con:
Código:
- En el documento de Word que tengo abierto quiero copiar la imagen que esta en el Clipboardarea.CopyPicture(oExcel.XlPictureAppearance.xlScreen, oExcel.XlCopyPictureFormat.xlBitmap);
Código:
- Este codigo funciona perfectamente pero en el documento de Word se ven las lineas de división del documento de Excel.if (Clipboard.GetDataObject() != null)
{
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Bitmap))
{
Draw.Image image = (Draw.Image)data.GetData(DataFormats.Bitmap, true);
image.Save(strImagePath, System.Drawing.Imaging.ImageFormat.Bmp);
}
else
{
MessageBox.Show("The Data In Clipboard is not as image format");
}
}
else
{
MessageBox.Show("The Clipboard was empty");
}
// pegar el contenido del portapapeles en el documento de word
word.AddPicture(strImagePath);
// insertar linea en blanco
word.InsertLineBreak();
Para que no se vean estas lineas, tengo que copiar el area de Excel de la siguiente forma:
Código:
- El problema es que ahora no puedo recoger la imagen del portapaeles con formato Bitmap ya que me dice que el formato es MetafilePict ó EnhancedMetafile, y al hacer:area.CopyPicture(oExcel.XlPictureAppearance.xlPrinter, oExcel.XlCopyPictureFormat.xlPicture);
Código:
me dice que el objeto es null, mi idea era recojer los datos del clipboard y generar una imagen para luego insertarla en Word, pero en este caso no se como recojerla.obj imagen = data.GetData(DataFormats.MetafilePict);
Alguna idea de como recogerlo? ó como se puede plantear de otra forma?
Tambien me gustaria saber como asegurarme que al concurrir varios usuarios para generar informes a la vez el Copy-Paste sea robusto.
Gracias y un saludo

