当 C# 可执行文件是 运行 形式的任务计划程序时,无法创建和保存 excel 文件

Not able to create and save excel file when C# executable is run form Task Scheduler

使用下面的代码,创建了 C# 控制台应用程序,它将在文件文件夹中创建 Test.xlsx。

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[])

以上异常可以从事件查看器中捕获。

以为我很难找到解决方案,但一天之内无法解决。

有人想指出 - 当应用程序来自任务计划程序 运行 时,它指向 "C:\Files " 但没关系,它应该在该文件夹下创建 Test.xlsx。

调试时出现以下异常

.

求助。

我宁愿将文件保存在具有唯一文件名的共享路径中,例如带有日期时间的随机文件名。我在这里看到的唯一问题是任务是 运行.

的用户的访问问题

从配置中获取路径并将文件保存到具有完整读写权限的共享路径。

不建议在应用服务器中保存文件

谢谢 基兰

有没有可能是权限问题?请尝试在安全设置中给用户授予一定的权限,或者换一个足够权限的用户。

不推荐使用 COM 在没有人工交互的情况下与 Office 进行互操作。请查看此 page 了解详细信息。我建议改用NPOI,这种操作会更高效可靠。