Hola;
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:
area.CopyPicture(oExcel.XlPictureAppearance.xlScreen, oExcel.XlCopyPictureFormat.xlBitmap);
- En el documento de Word que tengo abierto quiero copiar la imagen que esta en el Clipboard
Código:
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();
- Este codigo funciona perfectamente pero en el documento de Word se ven las lineas de división del documento de Excel.
Para que no se vean estas lineas, tengo que copiar el area de Excel de la siguiente forma:
Código:
area.CopyPicture(oExcel.XlPictureAppearance.xlPrinter, oExcel.XlCopyPictureFormat.xlPicture);
- 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:
Código:
obj imagen = data.GetData(DataFormats.MetafilePict);
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.
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