Невозможно создать и сохранить файл Excel, когда исполняемый файл C# запускается из планировщика заданий - PullRequest
0 голосов
/ 08 февраля 2020

Используя приведенный ниже код, создано C# консольное приложение, которое создаст Test.xlsx в папке Files.

public class Program
{
    public string dailyUpdateFile;
    Microsoft.Office.Interop.Excel.Application excel;
    Microsoft.Office.Interop.Excel.Workbook worKbooK;
    Microsoft.Office.Interop.Excel.Worksheet worKsheeT;
    static void Main(string[] args)
    {
        System.Diagnostics.Debugger.Launch();
        Program obj = new Program();
        obj.excel = new Microsoft.Office.Interop.Excel.Application();
        obj.excel.DisplayAlerts = false;
        DirectoryInfo dInfo = Directory.GetParent(Environment.CurrentDirectory);
        dInfo = Directory.GetParent(dInfo.FullName);

        obj.dailyUpdateFile = dInfo + "\\Files\\Test.xlsx";
        if (!File.Exists(obj.dailyUpdateFile))
        {
            obj.worKbooK = obj.excel.Workbooks.Add(Type.Missing);
            obj.worKsheeT = (Microsoft.Office.Interop.Excel.Worksheet)obj.worKbooK.ActiveSheet;
            obj.worKsheeT.Name = "TestFile";
            obj.worKsheeT.Cells[1, 1] = "Date";
            obj.worKsheeT.Cells[1, 2] = "Day";
        }
        obj.worKbooK.SaveAs(obj.dailyUpdateFile);

        obj.excel.Quit();
    }
}

Теперь, когда исполняемый файл приложения запускается из планировщика задач, получая исключение ниже:

Информация об исключении: System.Runtime.InteropServices.COMException в Microsoft.Office.Interop.Excel._Workbook.SaveAs (System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, Microsoft .Office.Interop.Excel.XlSaveAsAccessMode, System.Object, System.Object, System.Object, System.Object, System.Object) в Test.Program.Main (System.String [])

Выше исключения может быть пойман из Event Viewer.

Думаю, я довольно закрыт, чтобы найти решение, но не могу найти его за день.

Можно подумать, когда приложение запускается из задачи Планировщик, он указывает «C: \ Files», но это нормально, он должен создать Test.xlsx в этой папке.

При отладке получено исключение

enter image description here.

Помощь по это.

Ответы [ 2 ]

1 голос
/ 08 февраля 2020

Я бы предпочел сохранить файлы по общему пути с уникальным именем файла, таким как случайное имя файла с датой и временем. Единственная проблема, которую я вижу здесь, это проблемы с доступом пользователя, под которым выполняется задача.

Получите путь из конфигурации и сохраните файлы в общий путь, который будет иметь полные права на чтение и запись.

Не рекомендуется сохранять файлы на сервере приложений.

Спасибо, Киран

0 голосов
/ 08 февраля 2020

Возможно ли, что разрешение выдают? Пожалуйста, попробуйте предоставить определенное разрешение пользователю в настройках безопасности или смените другого пользователя с достаточным разрешением.

Использование COM для взаимодействия с Office без участия человека не рекомендуется. Пожалуйста, проверьте эту страницу для деталей. Вместо этого я рекомендовал использовать NPOI, это было бы более эффективным и надежным для такого рода операций.

...