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