Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Excel Y Salto De Página (https://www.clubdelphi.com/foros/showthread.php?t=29237)

nax 16-01-2006 21:24:52

Excel Y Salto De Página
 
Hola, qué tal. He checado en otros hilos sobre el salto de páginas en una hoja de excel, pero no lo he logrado resolver para C++ Builder, ¿alguien tiene idea de cómo? De antemano gracias!!!

OSKR 17-01-2006 17:51:28

No se q problema real tienes porq no lo especificas al detalle, por si acaso el Sr Alt126 nos resuelve caso todos los problemas con excel y casi otros de Office aqui, dede entonces yo lo aplico

nax 18-01-2006 06:32:41

Qué tal!! Bueno, el problema es el siguiente: desde C++ Builder creo una hoja de Excel y la voy llenando con información (desde Builder), el hecho es que en cierto momento deseo indicar un salto de página en la hoja, es decir, que cuando se mande a imprimir esa hoja de Excel la info no aparezca de corrido, sino separada de acuerdo a los saltos de página que se indicaron. Gracias de antemano.

alt126 25-01-2006 10:06:44

bueno...vamos a ver...que yo sepa, en excell, no hay saltos de pagina...solo puedes moverte de una celda a la otra...tanto horizontal como verticalmente.

asi que, si quieres hacer el efecto de salto de pagina, lo unico que puedes hacer es saltarte 2 o 3 celdas, y escribir mas abajo.

Mira a ver si eso es lo que quieres hacer...y sino...explica con algun ejemplo.

Para moverte puedes usar:

Código:

Variant Aplicacion_Word;   
Variant Selection;

Aplicacion_Word = Variant::CreateObject("Word.Application");
Aplicacion_Word.OlePropertySet("Visible", true);
Selection = Aplicacion_Word.OlePropertyGet("Selection");
Selection.OleFunction("TypeParagraph");
Selection.OleProcedure("MoveRight");
Selection.OleProcedure("MoveDown");


alt126 25-01-2006 10:14:29

Perdon...el codigo que te envie antes...era para WORD...ahora te pongo el de excell....

Si ves al final de este codigo....usas la propiedad fila y columna para rellenar celdas en concreto, asi que puedes dejar en blanco tantas como quieras.

Código:

//Ahora construimos el documento excel y lo mostramos.
//Creo un Objeto de tipo aplicacion 'Excel'
Variant Excel  = Variant::CreateObject("Excel.Application");
//Accedo a sus propiedades y metodos con 'OlePropertySet'
Excel.OlePropertySet("Visible",(Variant)true);
//Obtengo un objeto que será una coleccion de objetos libros
Variant MiColeccionLibros=Excel.OlePropertyGet("Workbooks");
//Creamos los libros.
//La Coleccion esta vacia y voy a añadir un libro
MiColeccionLibros.OleProcedure("Add");
//A partir de la Coleccion obtengo el primer objeto 'libro'
Variant MiLibro=MiColeccionLibros.OlePropertyGet("Item",(Variant)1);
//A partir del objeto libro obtengo una coleccion de hojas
Variant MIColeccionHojas=MiLibro.OlePropertyGet("Worksheets") ;
//A partir de la coleccion de hojas accedo de objetos hojas y las nombra
MIColeccionHojas.OlePropertyGet("Item",(Variant)1).OlePropertySet("Name",(Variant)"nombre");
//Obtengo un objeto hoja, a partir de la coleccion de hojas
Variant MiHoja=MIColeccionHojas.OlePropertyGet("Item",(Variant)1);
 
int fila,columna.
 
fila = 1;
columna = 2;


 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertyGet("Font").OlePropertySet("Italic",(Variant)cursiva);

 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertyGet("Font").OlePropertySet("Bold",(Variant)true);

 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertyGet("Font").OlePropertySet("Size",(Variant)10);

 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertyGet("Font").OlePropertySet("Color",(Variant)clBlack);

 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertySet("Value","dato");

 
Hoja.OlePropertyGet("Cells").OlePropertyGet("Item",(Variant)fila,(Variant)columna).OlePropertyGet("Interior").OlePropertySet("ColorIndex",(Variant)clWhite);


nax 28-01-2006 20:09:07

Qué tal, agradezco el seguimiento que le han dado a mis preguntas. El problema en particular que tengo es que al mandar a imprimir una hoja de Excel esta obviamente se imprime poniendo toda su información de manera corrida. Ahora lo que quiero es imprimir digamos los primeros n renglones en una hoja (en negrita para distinguir hoja (de Excel) y hoja (el papel en impresora)), el siguiente grupo de renglones en la segunda, y así sucesivamente. He visto que en el menú excel, existe una opción en Insertar/Salto de página que permite precisamente indicar qué información se imprimirá en una hoja y qué información en la siguiente.
Un saludo, y nuevamente gracias.

nax 28-01-2006 20:25:40

Se me pasó, por ejemplo en Delphi para insertar un salto de página es algo así ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; y así pues ya se forza a que el contenido después de ese salto de página se imprima en otra hoja.
Saludos.

nax 29-01-2006 20:20:27

Uuuuuaaaaaaah, gracias a Dios ya estuvo resuelto el problema. Me apoyé directamente con la info. que proporciona mocosoft desde su página sobre los métodos y procedimientos de HPageBreaks
http://msdn2.microsoft.com/en-us/lib...agebreaks.aspx

Bien, el código que hice es:

Código:

String r = "A15"; // 15 es el renglón donde voy a poner el salto de página
 
Variant Rango = Hoja.OlePropertyGet("Range", r.c_str());
 
Hoja.OlePropertyGet("HPageBreaks").OleProcedure("Add", Rango);

Saludos.


La franja horaria es GMT +2. Ahora son las 13:04:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi