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

标签 c# asp.net iis excel-interop

当应用程序从 IIS 运行时,无法在特定路径创建 excel 文件。但是它是在使用 visual studio 2008 调试代码时创建的。即使我已经尝试使用绝对路径并使用 server.mappath() 函数但徒劳无功。服务器抛出错误:HTTP 404。您正在寻找的资源(或一个其依赖项)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。 请求的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);
        }

    }

最佳答案

从类似服务器的场景(IIS/ASP.NET/Windows 服务...)使用 Office Interop MS 不支持 - 请参阅 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等等

关于c# - 从 IIS 运行应用程序 (asp.net) 时无法创建 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728403/

相关文章:

asp.net - ASP.NET 应用程序池回收会刷新静态对象上的缓存吗?

c# - 将 Moq 设置为在调用方法时增加值

c# - ApplicationData.Current.TemporaryFolder.CreateFileAsync() 从桌面应用程序失败

c# - ASP.NET、C# 如何将 StringQuery 传递给自定义 SQL 命令

asp.net - ASP.NET URL重写

c# - 运行示例 MVC 项目时需要身份验证

c# - LINQ to 自定义查询语言?

c# - 在 Observable Items 生成时处理它们

c# - Document.Ready() 在 PostBack 后不工作

IIS 7 URL 重写 - 403 错误