| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Jue 03 Mar, 2005 11:07 pm Asunto: Añadir y Quitar Paginas (Sheets) en Excel |
|
|
Saludos, He estado mirando por el foro y no he conseguido como añadir una pagina a un libro de excel, hay un ejemplo donde se crea con solo una pagina, jugando con los parametros he conseguido añadir un nuevo grafico y un nuevo macro, pero nada de una nueva pagina.
Agradezco de antemano cualquier ayuda. |
|
| Volver arriba |
|
 |
rayder Master

Registrado: 03 Mar 2004Mensajes: 207
|
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Lun 07 Mar, 2005 5:37 pm Asunto: |
|
|
De ese link es donde tome el ejemplo, pensaba que el parametro pasado se referia al numero de paginas a insertar | Código: | //---------CREA EL LIBRO CON UNA SOLA HOJA
xlBooks.Exec(Procedure("Add") << 1);
//-------- crea el libro de la aplicacion con una sola hoja
Variant xlBook = xlBooks.Exec(PropertyGet("Item") << 1);
| La primera instruccion crea el libro con una hoja, pero si cambias el parametro a 2 te crea el libro con un grafico, y con el valor 3 con un macro.
Solucione la anexion de hojas con el siguente codigo: | Código: |
Variant vExcel = CreateOleObject("Excel.Application");//Acceso a Excel
vExcel.Exec(PropertySet("Visible") << true); // Muestra App.
vLibros = vExcel.Exec(PropertyGet("Workbooks"));//Acceso a Libros
vLibros.Exec(Procedure("Add")<<1);//Crea Libro
Variant vHojas = vExcel.Exec(PropertyGet("Worksheets"));//Acceso a Hojas
vHojas.OleProcedure("Add");//Crea Hoja nueva
vHoja = vExcel.Exec(PropertyGet("ActiveSheet"));//Toma hoja No necesario
vHoja.Exec(PropertySet("Name")<< "Partida Nº "; //Renombra Hoja |
Bueno en otro hilo en paralelo salio mas informacion al respecto
https://cppbuilder.es/viewtopic.php?t=9405
Muchas gracias por tu interes  |
|
| Volver arriba |
|
 |
rayder Master

Registrado: 03 Mar 2004Mensajes: 207
|
Publicado: Mar 08 Mar, 2005 9:13 am Asunto: |
|
|
Ambos enlaces son al mismo hilo.
El siguiente código lo encontre hace unos meses en este foro, simplemente lo que hace es generar un fichero excel, trabajando con los valores por omisión que tenga configurado el usuario en excel.
| Código: |
//-------- Abre EXCEL
Variant xlApp;
xlApp = CreateOleObject("Excel.Application");
//-------- hace EXCEL visible
xlApp.Exec(PropertySet("Visible") << true);
//-------- crea acceso al objeto 'libro'/workbook
Variant xlBooks = xlApp.Exec(PropertyGet("Workbooks"));
//-----------------------------------------------------------------------------------
//En este punto, no se pasa parámetro alguno, lo que excel interpreta,
//"por omision", normalmente 3 hojas si no se ha cambiado en las opciones
//-------- Crea un fichero nuevo
xlBooks.Exec(Procedure("Add"));
//-------- Nuevo libro con una sola hoja, independientemente de la configuracion del usuario
// xlBooks.Exec(Procedure("Add") << 1);
//-----------------------------------------------------------------------------------
// ... o abre uno existente
// xlBooks.Exec(Procedure("Open") << "C:\\directorio\\fichero.xls");
//-------- coge el primer libro de la aplicacion
Variant xlBook = xlBooks.Exec(PropertyGet("Item") << 1);
//-------- crea acceso al objeto 'hoja'/worksheets
Variant xlSheets = xlBook.Exec(PropertyGet("Worksheets"));
//-------- coge la primera hoja del libro
Variant xlSheet = xlSheets.Exec(PropertyGet("Item") << 1);
//-------- Trabajando con celdas...
Variant VRange;
//-------- Escribe texto en las primeras 3x3 celdas
VRange = xlSheet.Exec(PropertyGet("Range") << "A1");
VRange.Exec(PropertySet("Value") << "CeldaA1");
VRange = xlSheet.Exec(PropertyGet("Range") << "A2");
VRange.Exec(PropertySet("Value") << "CeldaA2");
VRange = xlSheet.Exec(PropertyGet("Range") << "A3");
VRange.Exec(PropertySet("Value") << "CeldaA3");
//------
VRange = xlSheet.Exec(PropertyGet("Range") << "B1");
VRange.Exec(PropertySet("Value") << "CeldaB1");
VRange = xlSheet.Exec(PropertyGet("Range") << "B2");
VRange.Exec(PropertySet("Value") << "CeldaB2");
VRange = xlSheet.Exec(PropertyGet("Range") << "B3");
VRange.Exec(PropertySet("Value") << "CeldaB3");
//------
VRange = xlSheet.Exec(PropertyGet("Range") << "C1");
VRange.Exec(PropertySet("Value") << "CeldaC1");
VRange = xlSheet.Exec(PropertyGet("Range") << "C2");
VRange.Exec(PropertySet("Value") << "CeldaC2");
VRange = xlSheet.Exec(PropertyGet("Range") << "C3");
VRange.Exec(PropertySet("Value") << "CeldaC3");
//-------- Borra las primeras 2 x 2 celdas
VRange = xlSheet.Exec(PropertyGet("Range") << "A1:B2");
VRange.Exec(Function("ClearContents"));
//-------- Guarda el libro actual
xlBook.Exec(Procedure("SaveAs") << "c:\\fichero.xls");
|
Tan solo ponlo en un boton y ejecutalo.
Incluye lo siguiente:
#include <Comobj.hpp>
#pragma link "Excel_2K_SRVR"
Por otro lado, las opciones que comentas para generar graficos y macros no las conocia, pues nunca las había necesitado. Siempre se aprende algo nuevo.
Y si en algo puedo ayudar, ya sabes. _________________ Un saludo
Rayder |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Mar 08 Mar, 2005 10:50 pm Asunto: |
|
|
Gracias, estoy recopilando informacion sobre excel a ver si tengo tiempo de hacer un componente que facilite la importacion/exportacion de datos, tengo uno pero es muy elemental y quisiera ponerle mas opciones.
Gracias de nuevo  |
|
| Volver arriba |
|
 |
|