Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Como crear un libro de excel con 6 hojas no estoy usando el ExcelApplication (https://www.clubdelphi.com/foros/showthread.php?t=26091)

Martha Ayala 12-10-2005 23:23:04

Como crear un libro de excel con 6 hojas no estoy usando el ExcelApplication
 
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

Código Delphi [-]
 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

Código Delphi [-]
   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:
Código:

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

Muchas gracias
 
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


La franja horaria es GMT +2. Ahora son las 19:42:43.

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