Este es el código que utilizo en mi aplicacion para pegar en un documento de Word el area de impresión de un libro Excel y que funciona bien en desarrollo, sin embargo en un sitio con IIS no funciona, da fallo al pegar y la razón será alguna de las que da Microsoft en el siguiente documento.
http://support.microsoft.com/default...;en-us;q257757
¿Tienen alguna idea de como hacer esto y que no falle cuando publico en IIS, aunque sea haciendolo de otra forma? ¿algun componente comercial?
Código:
[STAThread]
private void CreateReport()
{
VkExcel excel = null;
vkWord word = null;
object oMissing = System.Reflection.Missing.Value;
try
{
String strIdFile = Request["ddlFile"];
// Variables Locales
String strExcelFile = strIdFile + ".xls";
String strWordFile = strIdFile + ".doc";
String strImageFile = strIdFile + ".jpg";
String strExcelPath = Server.MapPath("../../Templates/" + strExcelFile);
String strWordPath = Server.MapPath("../../Templates/" + strWordFile);
String strImagePath = Server.MapPath("../../Templates/" + strImageFile);
String strWordTemplate = Server.MapPath("../../Templates/Geslims.dot");
// Abrir Excel
excel = new VkExcel();
String strExcelStatus = excel.OpenFile(strExcelPath, null);
// Abrir Word
word = new vkWord();
word.OpenTemplate(strWordTemplate);
word.GoToTheEnd();
if (strExcelStatus.Equals("OK"))
{
// recorre todas las hojas del libro
for (int i = 1; i <= excel.Sheets.Count; i++)
{
// obtener area de impresión de la hoja activa
excel.Worksheet = (oExcel.Worksheet)excel.Sheets[i];
oExcel.Range area = excel.GetRange("Área_de_impresión");
if (area != null)
{
// (1ª parte) Convertir el area de Excel en una imagen y copiarla al portapapeles
area.CopyPicture(oExcel.XlPictureAppearance.xlPrinter, oExcel.XlCopyPictureFormat.xlPicture);
// (2ª parte) Pegar el contenido del portapapeles en el documento de Word
object oDataType = oWord.WdPasteDataType.wdPasteMetafilePicture;
word.Selection.PasteSpecial(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oDataType, ref oMissing, ref oMissing);
// insertar linea en blanco
word.InsertLineBreak();
}
}
// salvar documento de Word
word.SaveAs(strWordPath);
// Mensaje
this.lblMessage.Text = "Se ha generado el informe " + strWordFile;
}
}
finally
{
// Cerrar excel
excel.CloseFile();
excel.stopExcel();
// Cerrar Word
word.Quit();
}
}