У меня есть консольное приложение Delphi, которое работает с Excell, хотя OLE.Delphi, OLE и проблемы с Microsoft Scheduler
нелогич- кода довольно прост
procedure SaveBaseRecordsToFile(BaseName: string; PaymentRecords: TPaymentRecords);
var
i: integer;
Excel: Variant;
begin
try
Excel:=CreateOleObject('Excel.Application');
Excel.DisplayAlerts:=False;
except
on E: Exception do begin
LogWriter.WriteLog(E.ClassName + ': ' + E.Message);
exit;
end;
end;
try
Excel.Workbooks.Add;
//Excel.Worksheets.Add;
Excel.Worksheets[1].Cells[2, 1].Value := 'Account number';
Excel.Worksheets[1].Cells[2, 2].Value := 'Sum';
for i := 0 to Length(PaymentRecords) - 1 do begin
Excel.Worksheets[1].Cells[i + 3, 1].Value := PaymentRecords[i].NUMBER;
Excel.Worksheets[1].Cells[i + 3, 2].Value := PaymentRecords[i].SUMMA;
end;
Excel.ActiveSheet.Name := 'SHEET1';
Excel.Application.Workbooks[1].SaveAs(ExtractFilePath(ParamStr(0)) + BaseName + '.xls', 56);
Excel.Workbooks.Close;
Excel.Quit;
finally
Excel := Unassigned;
end;
end;
Когда я запускаю это приложение в интерактивном режиме (сам) он WORS совершенным. Но когда я пытаюсь запустить его через стандартного Microsoft Scheduler я вижу в журнале моих приложений такие записи:
21: 41: 40,523: EOleSysError: Отказано в доступе, Progid: «Excel.Application» (отказано в доступе с русского)
Если я устанавливаю в расписании вариант задачи "Выполнить с наивысшими правами" Я вижу в журнале моих приложений такие записи:
20: 12: 04.475: EOleException: метод SaveAs из класса Workbook завершен метод неверно (SaveAs класса рабочей книги неправильно с русского)
Есть ли способ запустить приложение с вызовом OLE через Microsort Scheduler?
Возможно, я могу работать с Excel без OLE (это довольно простые операции, как вы могли видеть на моем примере)? Как мне это сделать?
Спасибо, Дэвид. У вас есть пример библиотеки для использования с Delphi? –
Я лично использую DevExpress ExpressSpreadsheet, который является визуальным контролем, но я бы не рекомендовал его. Нам пришлось переписать большие части. Лучшая библиотека - Aspose. Это библиотека .net. Я уверен, что если вы выполните какой-либо веб-поиск, вы найдете то, что вам нужно. –