marceloalegre
18-09-2007, 16:59:16
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:
// 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!
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:
// 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!