Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas para abrir archivo EXCEL (https://www.clubdelphi.com/foros/showthread.php?t=48197)

marceloalegre 18-09-2007 16:59:16

Problemas para abrir archivo EXCEL
 
Buenos Dias amigos

Les molesto porque estoy con el siguiente inconveniente:
Estoy procesando un archivo excel que cargo luego en otra estructura. El problema esta en que si la hoja en cuestion no se llama Hoja1 no abre el archivo. Para abrir el excel estoy usando un adoConnection y un adoDataset.
El codigo que uso es el siguiente:
Código Delphi [-]
  // aqui comienza el tratamiento del EXCEL
  ADODataSetXls.Active:=false;
  DMImportExcel.mdImportData.Close;
  DMImportExcel.mdImportData.Open;
  DMImportExcel.mdImportData.ReadOnly:=false;
  ADOConexionXls.ConnectionString:=ADOConexionXls.ConnectionString+';Data Source='+edArchivoOrigen.text;
  ADODataSetXls.Active:=true;
  ADODataSetXls.first;
  initProgress('Extrayendo Datos desde Excel.', ADODataSetXls.RecordCount);
 try
  while not ADODataSetXls.eof do
  begin
    DMImportExcel.mdImportData.Insert;
    if (ADODataSetXls.fields[0].AsString = '') or (ADODataSetXls.fields[1].AsInteger = 0) or (ADODataSetXls.fields[1].AsInteger = NULL) then
      ADODataSetXls.Next;
    DMImportExcel.mdImportDataDestino.value:= ADODataSetXls.fields[0].AsString; //Destino
    DMImportExcel.mdImportDataPrefijo.value:= ADODataSetXls.fields[1].AsInteger; //Prefijo
    DMImportExcel.mdImportDataPrecio.value:= ADODataSetXls.fields[2].AsFloat; //Precio
    DMImportExcel.mdImportData.Post;
    ADODataSetXls.Next;
    AdvanceProgress();
  end;
 except
  memoLog.Lines.Add('Error al Cargar Archivo Excel, verifique los datos del mismo!.');
  exit;
  end;

Si la hoja no se llama Hoja1 cuando hace el ADODataSetXls.Active:=true; el procedimiento se suspende sin dar error alguno... Si se llama Hoja1 anda todo correctamente!

Existe manera de que abra cualquier hoja (la primera de todas me interesa) dado que en el adoDataset tengo la propiedad CommandText en Hoja1$ ... pero me gustaria poder poner ahi, la primera hora sin importar el nombre...

GRACIAS!

marceloalegre 18-09-2007 19:40:39

Gracias Roman :)
 
Evidentemente no habia buscado bien en los foros y la respuesta estaba AQUI!!,, Les paso para el que lo necesite el codigo para conseguir el nombre de la primera hora para hacer el procesamiento. Esto es una modificacion de un codigo ya posteado por roman, GRACIAS.

Código Delphi [-]
procedure HojasExcel(Archivo: String; var nombreHoja:String);
var
  Excel: OleVariant;
  Libro: OleVariant;
  I: Integer;
begin
  Excel := CreateOleObject('Excel.Application');
  Libro := Excel.WorkBooks.Open(Archivo);
  nombreHoja:= Libro.Worksheets.Item[1].Name; //Hoja 1 del archivo excel
  Libro.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var nombreHoja:string;
begin
  HojasExcel('c:\archivo.xls',nombreHoja);
  showmessage(nombreHoja);
end;


La franja horaria es GMT +2. Ahora son las 10:33:34.

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