Hallo Markus,
danke für das Testprogramm.
Ich habe im Dienst nun mit Hilfe des Testprogramms folgende Funktion erstellt:
Delphi-Quellcode:
function TResultT.TestExcelfile(intCustID: integer; strResultFile:
string): boolean;
var
strFile :
string;
strPath :
string;
strFileName:
string;
XLSFile : TXLS;
begin
Result := True;
strFileName := '
D:\Ausgabe\test.xls';
try
try
XLSFile := CreateXLS(PAnsiChar(strFileName),xlsfmcreate);
XLSFile.Creator := PAnsiChar('
Test99');
XLSFile.Font.
Name := (PAnsiChar('
Segoe UI'));
XLSFile.WorkSheetAdd(PAnsiChar('
Stichprobenergebnis'));
// Kopfdaten
XLSFile.
Write(0,1,1, PAnsiChar('
Test'));
XLSFile.
Write(0,1,3, PAnsiChar('
Kunde'));
XLSFile.
Write(0,2,3, PAnsiChar(GetCustNameByID(intCustID, conData)));
XLSFile.
Write(0,1,4, PAnsiChar('
Stichprobe vom:'));
XLSFile.
Write(0,1,5, PAnsiChar('
Prüfer/in:'));
XLSFile.
Write(0,1,6, PAnsiChar('
Vereinbartes Qualitätsniveau:'));
XLSFile.WriteFile;
except
on E:
Exception do
begin
WriteLog('
Fehler bei Erzeugen Excel-Tabelle, Meldung: ' + E.
Message, 1);
Result := False;
end;
end;
finally
XLSFile.Free;
end;
Beim Durchsteppen im Debugger zeigt sich, dass diese Methode auch ohne Probleme durchlaufen wird. Es wird aber keine Datei geschrieben. Die Datei ist, wie im obigen Quellcode zu sehen, mit komplettem Pfad angegeben.
Der Dienst läuft unter SYSTEM. SYSTEM hat auf den Zielordner volle Zugriffsrechte.
Ich bin jetzt dabei, ein kleines
VCL-Programm zu schreiben, dass vom Dienst per ShellExecute aufgerufen wird, mal sehen, ob das besser funktioniert.
Anmerkung: Was mich halt verwirrt, ist dass im gleichen Thread (TResultT) per FastReport PDF-Dateien erzeugt werden (auch mehrere hintereinander), die im gleichen Verzeichnis landen - das funktioniert einwandfrei, nur Excel (und in Fortsetzung von dem Ganzen) und Outlook weigern sich zu kooperieren. Evtl. muss dafür später ein Tray-Programm her.
Grüße
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