Ver Mensaje Individual
  #6  
Antiguo 07-02-2010
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Reputación: 18
_cero_ Va por buen camino
Thumbs up

Lo siento el código que te di era para abrir un xls ya creado con anterioridad, y meterle los datos (en mi opinión es mejor ya que puedes poner imágenes y darle un formato más agradable de una forma fácil).

Ahora para crear el xls desde cero solo se necesitarían unas pequeñas modificaciones que son:
Código:
    Variant XL,v0,v1; //quite variables que no se usan
    XL=Variant::CreateObject("excel.application");
    XL.OlePropertySet("Visible", true);
    XL.OlePropertyGet("Workbooks").OleProcedure("Add"); //se agrega un libro
    //Aqui e se cambia Reporte por Hoja1 que es el nombre por defecto de las hojas de excel
    v0=XL.OlePropertyGet("Sheets", "Hoja1");
    v1=v0.OlePropertyGet("Cells");

    //DATOS//
    //se escriben los datos como ya lo haces
    v1.OlePropertyGet("Cells", 2/*cordenada y*/, 3/*cordenada x*/).OlePropertySet("Value", "lolo");


    XL.OlePropertySet("DisplayAlerts", false);
    //aqui es donde se guarda
    XL.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs", "C:\\test.xlsx"/*xlsxpor que uso office 2007*/);
    XL=Unassigned;
Pd. La parte de los datos se queda exactamente igual, solo se cambia la forma en la que se trabaja con “XL”.

Pd2. Ese error da cuando se intenta acceder a una función que no existe, debido a que el manejo de “OleProcedure” es complejo no me di cuenta de los dos fallos del anterior código. Nos vemos y cuenta como te fue.

Edito: en caso de que abras Excel de forma oculta, no se te olvide poner “XL.OleProcedure("Quit");” antes de “XL=Unassigned;” para cerrarlo, de lo contrario se quedara abierto y solo se serrara terminando el proceso en el administrador.

Última edición por _cero_ fecha: 07-02-2010 a las 05:48:26.
Responder Con Cita