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