从IIS运行应用程序(asp.net)时无法创建excel文件

Pre*_*rem 1 c# asp.net iis excel-interop

从IIS运行应用程序时,无法在特定路径上创建Excel文件.但它是在使用visual studio 2008进行代码时创建的.即使我尝试使用绝对路径并使用server.mappath()函数但是在虚荣.服务器抛出错误:HTTP 404.您正在寻找的资源(或者一个其依赖关系)可能已被删除,名称已更改,或暂时不可用.请查看以下网址,确保拼写正确.请求的URL:/Error.aspx

代码如下:

private void CreateExcel(DataTable dt)
    {
        try
        {

        FilePath =  "\\\\192.168.1.252\\GNC Reports\\TallyExport.xls";
            Excel.Application oXL = new Excel.Application();

            //Get a new workbook.
            Excel._Workbook oWB = (Excel._Workbook)(oXL.Workbooks.Add(Type.Missing));

            // *************** Sheet 1
            Excel._Worksheet oSheet = (Excel._Worksheet)oWB.Sheets["Sheet1"];
            oSheet.Name = "Journal";
            WriteWxcel(oSheet, dt, 3);

            //***************** Sheet 2
            oSheet = (Excel._Worksheet)oWB.Sheets["Sheet2"];
            oSheet.Name = "Payroll";
            WriteWxcel(oSheet, dt, 4);

            // ************* Sheet 3
            oSheet = (Excel._Worksheet)oWB.Sheets["Sheet3"];
            oSheet.Name = "Receipt";
            WriteWxcel(oSheet, dt, 2);

            //Save Excel File
            oWB.SaveAs(FilePath, Excel.XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            oXL.Quit();

        }
        catch (Exception ex)
        {
            BussinessLayer.CMSException.Instance.HandleMe(this, ex);
        }

    }
Run Code Online (Sandbox Code Playgroud)

Yah*_*hia 6

MS不支持在类似服务器的情况下使用Office Interop(IIS/ASP.NET/Windows服务...)- 请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US; q257757#KB2

另一点是,自从windows vista出现了一些与安全相关的更改,这些更改阻止从Windows服务执行任何"类似桌面"的操作(例如打印,写入网络共享......)...

Interop的替代方案:

在没有Interop的情况下,有许多选项可以读取/编辑/创建Excel文件:

MS提供免费的OpenXML SDK V 2.0 - 请参阅http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx(仅限XLSX)

这可以读取+写入MS Office文件(包括Excel).

另一个免费选项见http://www.codeproject.com/KB/office/OpenXML.aspx(仅限XLSX)

如果你需要更多像处理旧的Excel版本(如XLS,不仅仅是XLSX),渲染,创建PDF,公式等,那么有不同的免费和商业库,如ClosedXML(免费,仅限XLSX),EPPlus(免费,仅限XLSX) ,Aspose.Cells,SpreadsheetGear,LibXLFlexcel等.