Hallo,
ich versuche gerade, eine Excel-Datei mit den
Indy-Komponenten von einem
FTP-Server herunterzuladen, erhalte aber nur Datensalat.
Auf dem
FTP-Server landen gewöhnliche Textdateien, deren Download funktioniert. Excel-Tabellen werden jedoch von Excel nur noch mit Datensalat angezeigt. Lade ich die Datei per Firefox oder Filezilla herunter, sind sie lesbar.
Ich habe zum Vergleich die Datei einmal per Programm (
Indy) heruntergeladen und einmal per FileZilla. Die erste Datei wird zerstört angegezeigt, die zweite (FileZilla) einwandfrei.
Ich habe die beiden Dateien dann mit WinMerge verglichen und Überraschung: WinMerge behauptet, dass die beiden Dateien identisch wären.
Im Forum gibt es ja mehrere Threads zu dem Thema, daher habe ich den Tip mit ftBinary (sollte aber Default sein).
Hier der Code, der zum Herunterladen verwendet wird:
Delphi-Quellcode:
idFTP1 := TidFTP.Create(Application);
try
idFTP1.Host := strFTPHost;
idFTP1.Username := strFTPUser;
idFTP1.Password := strFTPPW;
idFTP1.Port := intFTPPort;
idFTP1.UseExtensionDataPort := True;
idFTP1.TransferType := ftBinary;
try
idFTP1.Connect;
if (idFTP1.Connected)
then
begin
IdFTP1.ChangeDir('
/Upload');
// Liste in Grid darstellen
for iCnt := 0
to gv1.RowCount - 1
do
begin
if (gv1.CellByName['
colCheck', iCnt].AsBoolean)
then
begin
strFile := gv1.CellByName['
colFile', iCnt].AsString;
idFTP1.TransferType := ftBinary;
strTargetFile := lblTargetDir.Caption + '
\' + strFile;
if (FileExists(strTargetFile))
then
begin
DeleteFile(strTargetFile);
end;
IdFTP1.Get(strFile, strTargetFile, True);
end;
end;
end
else
begin
blOK := False;
end;
except
on E:
Exception do
begin
ShowWarning('
Fehler bei Herunterladen der Dateien, Meldung: ' + E.
Message);
blOK := False;
end;
end;
finally
idFTP1.Quit;
idFTP1.Disconnect;
idFTP1.Free;
Screen.Cursor := CurSave;
end;
Ich habe testweise den Download über TFileStream durchgeführt, mit dem selben Ergebnis.
Wie gesagt, der Code liefert einwandfreie Textdateien, aber keine verwendbaren Excel-Dateien und ich weiss nicht, warum.
Hat vielleicht jemand einen Tip, wo ich suchen könnte?
Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty