Salve a tutti,
volevo sapere se qualcuno di voi conoscesse un componente Delphi (opensource o proprietario) che permetta di scrivere un file xls in formato nativo, quindi senza collegarsi all'applicazione Microsoft Excel.
Salve a tutti,
volevo sapere se qualcuno di voi conoscesse un componente Delphi (opensource o proprietario) che permetta di scrivere un file xls in formato nativo, quindi senza collegarsi all'applicazione Microsoft Excel.
Sì, è sufficiente utilizzare l'interfaccia Ado con cui puoi creare e leggere un file xls ed ogni formato di database. Cerca un esempio d'uso di Ado in Delphi e vedrai che è molto facile.
Il problema è che io sto cercando una soluzione che mi renda indipendente da Microsoft Excel.
La mia azienda sta progettando il passaggio da Microsoft Office a OpenOffice.org (non è stata una mia decisione) e quindi mi serve uno strumento o un metodo che mi permetta di scrivere file XLS senza che Excel sia necessariamente installato sul PC
vedi queste...
http://sm-software.com/txlsfile.htm?...Fc-T3wodIBqU6w
e facci sapere
ciao
vedia anche qui
http://www.scalabium.com/sme/
Ecco una porzione di codice:
if FileExists(TempPath+ '\Mezzi.xls') then begin
while FileExists(TempPath+ '\Mezzi('+ IntToStr(I)+ ').xls') do begin
Inc(I);
end;
ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ TempPath+ '\Mezzi('+ IntToStr(I)+ ').xls'+
';Extended Properties=Excel 8.0';
end else begin
ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ TempPath+ '\Mezzi.xls'+
';Extended Properties=Excel 8.0';
end;
ADOConnection.LoginPrompt := False;
try
ADOConnection.Execute('create table Automezzi (Descrizione Text, Targa Text, Dipendente Text, OraRitiro DateTime, OraConsegna DateTime,'+
' TotaleMinuti Number, TotaleOre Number, Chilometri Number, ChilometriPercorsi Number)', cmdText, [eoExecuteNoRecords]);
for I := 0 to Length(AAAutomezziMovimenti) - 1 do begin
ADOConnection.Execute('insert into Automezzi (Descrizione, Targa, Dipendente, OraRitiro, OraConsegna, TotaleMinuti, TotaleOre, Chilometri, ChilometriPercorsi) values ("'+
AutomezzoDescrizione(AAAutomezziMovimenti[I].id_automezzo)+ '", "'+
AutomezzoTarga(AAAutomezziMovimenti[I].id_automezzo)+ '", "'+
Dipendente(AAAutomezziMovimenti[I].id_anagrafica)+ '", "'+
DateTimeToStr(AAAutomezziMovimenti[I].TDTOraRitiro, MainForm.Base.MySettings)+ '", "'+
DateTimeToStr(AAAutomezziMovimenti[I].TDTOraConsegna, MainForm.Base.MySettings)+ '", '+
IntToStr(MinutesBetween(AAAutomezziMovimenti[I].TDTOraRitiro, AAAutomezziMovimenti[I].TDTOraConsegna))+ ', '+
IntToStr(HoursBetween(AAAutomezziMovimenti[I].TDTOraRitiro, AAAutomezziMovimenti[I].TDTOraConsegna))+ ', '+
IntToStr(AAAutomezziMovimenti[I].Chilometri)+ ', '+
IntToStr(AAAutomezziMovimenti[I].ChilometriPercorsi)+
')', cmdText, [eoExecuteNoRecords]);
end;
ADOConnection.Close;
MessageDlg('File salvato correttamente.', mtInformation, [mbOk], 0);
Except on e: Exception do begin
MessageDlg(e.Message, mtError, [mbOk], 0);
end;
end;
che funziona a prescindere dal fatto che ci sia installato o meno Microsoft Office (io nel pc ho solo OpenOffice).
Ricorda che puoi sempre usare il formato csv.
Ho provato il tuo codice su un PC senza MS Office e in effetti funziona. grazie mille!