PDA

Ver la Versión Completa : Como crear un libro de excel con 6 hojas no estoy usando el ExcelApplication


Martha Ayala
12-10-2005, 23:23:04
e :confused: Necesito un crear un archivo excel pero con 6 hojas no estoy ocupando el ExcelApplication porque por cada archivo excel necesito una nueva instancia. estoy ocupando lo siguiente para crear el archivo excel


var
WorkSheet:_WorkSheet;
WorkBks:WorkBooks;
WorkSheets:Sheets;
Workbk: WorkBook;
begin
//Creamos una instancia de la aplicación
XLApp:= Excel_TLB.CoApplication_.Create;
XLApp.Visible[0]:=True;
WorkBks:=XLApp.Workbooks as WorkBooks;
WorkBks.Add(XLWBatWorksheet, 0);
WorkBks.Add(XLWBatWorksheet, 0);
WorkBk := WorkBks.Item[1];
WorkSheets := Workbk.WorkSheets;
//establecemos él numero de hoja
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
{...}

pero cuando quiero crear la siguiente hoja escribo


WorkSheet := WorkBk.WorkSheets.Get_Item(2) as _WorkSheet;

y me marca Error indice invalido
por favor agradeceria mucho su ayuda o alguna pista

Neftali [Germán.Estévez]
13-10-2005, 09:20:41
Tal vez es porque no estén creadas.
Deberías revisar si WorkSheets tiene algun método Add o similar.

OSKR
13-10-2005, 16:06:16
Yo habia creado esta clase (en Builder) para interactuar con el Excel, mira bien la parte de la creacion del libro y a partir de ahi la instruccion para llamar las hojas:

class Excel
{ public:
Variant xlApp;
Variant xlBooks;
Variant xlBook;
Variant xlSheets;
Variant xlSheet;
Variant xlRange;
void AbrirExcel(bool Visible)
{ xlApp = CreateOleObject("Excel.Application"); //LLamamos al Excel
xlApp.Exec(PropertySet("Visible") << Visible);
xlBooks=xlApp.Exec(PropertyGet("Workbooks")); //LLamamos al conjunto de libros
xlBooks.Exec(Procedure("Add")); //Le agregamos 1
xlBook = xlBooks.Exec(PropertyGet("Item")<<1); //LLamamos a ese libro
xlSheets = xlBook.Exec(PropertyGet("Worksheets")); //LLamamos al conjunto de hojas del primer libro
xlSheet = xlSheets.Exec(PropertyGet("Item") << 1); //LLamamos a la primera hoja
}
void Escribir(int fila, int colm, AnsiString Value)
{ AnsiString Celda=AnsiString((char)(64+colm))+AnsiString(fila);
xlRange= xlSheet.Exec(PropertyGet("Range") << Celda);
xlRange.Exec(PropertySet("Value") << Value);
}
void Escribir(int fila, int colm, AnsiString Value,AnsiString Formato)
{ AnsiString Celda=AnsiString((char)(64+colm))+AnsiString(fila);
xlRange= xlSheet.Exec(PropertyGet("Range") << Celda);
xlRange.Exec(PropertySet("Value") << Value.ToDouble());
xlRange.Exec(PropertySet("NumberFormat") << Formato);
}
void Guardar(AnsiString FileName)
{ xlBook.Exec(Procedure("SaveAs") << FileName); //FileName debe tener extensiòn .xls
}
void Cerrar(bool Close=false)
{ if( Close)
xlApp.Exec(Procedure("Quit"));
xlApp.Clear();
}
};

Martha Ayala
24-10-2005, 18:33:49
agradezco tu ayuda, en error que me envía era por otra linea de codigo y no por lo que yo creía. y bueno ya puedo crear las 6 hojas.

Atte. Martha Ayala