在运行 IIS8.5 的 Windows 2012 服务器上以经典 ASP 保存 XLS 工作表 - 部分有效

Posted

技术标签:

【中文标题】在运行 IIS8.5 的 Windows 2012 服务器上以经典 ASP 保存 XLS 工作表 - 部分有效【英文标题】:Saving an XLS Worksheet in Classic ASP, on a Windows2012 server running IIS8.5 - partly works 【发布时间】:2019-10-25 15:51:33 【问题描述】:

因此,我们的一位程序员离开了巢穴,我们转向了 Win2012 解决方案。该网站运行良好,一切都很好,除了 excel,特别是只有一行代码失败。

我们在 IIS 中为网站运行 ASP 经典,Excel 对象创建良好,图表保存在正确的文件夹中,但是当它点击时:

wb.SaveAs "D:\WEBSITES\test.xls"

页面出现 500 错误,然后将 excel 留在任务管理器的内存中。 如果我删除 XLS 上的保存,JPG 从图表中保存完好,代码继续并正确关闭 excel。由于 2003 年服务器和 2012 年服务器之间的代码没有更改,我有点困惑为什么它现在决定失败。

对此的任何帮助将不胜感激,我不知道做网络工作,当我这样做时,它通常会解决 COM 问题,并且由于它运行,它只是一个主要的 p.i.t.a。这一点不起作用。提前致谢 ! :)

<%


    Dim xlapp   ' Our Excel App
    Dim wb      ' Our Workbook within the Excel App
    Dim ws      ' Our Worksheet within the Workbook 
    Dim crt     ' The chart object
    Dim SourceRange ' The Source Range for the chart object

    Const xlWorkSheet = -4167 
    Const xlLineMarkers = 65

    Set xlapp = CreateObject("Excel.Application")

    Set wb = xlapp.Workbooks.Add(xlWorksheet)
    Set ws = wb.Worksheets(1)


    xlapp.DisplayAlerts = false


    Set SourceRange = ws.Range("A3:B6")
    Set crt = ws.ChartObjects.Add(0, 0, 480, 383)
    crt.Chart.ChartWizard SourceRange, 3, , 2, 1, 0, 2, "Virgin Chaser Report " & formatdatetime(now(),2)
    crt.Chart.ChartType = 51


    crt.Chart.HasTitle = True
    crt.Chart.ChartTitle.Text = "Virgin Chaser Report " & formatdatetime(now(),2)
    crt.Chart.ChartTitle.AutoScaleFont = false
    crt.Chart.ChartTitle.font.Name = "Arial"
    crt.Chart.ChartTitle.font.Size = 12
    crt.Chart.ChartTitle.font.Strikethrough = False
    crt.Chart.ChartTitle.font.Superscript = False
    crt.Chart.ChartTitle.font.Subscript = False
    crt.Chart.ChartTitle.font.OutlineFont = False
    crt.Chart.ChartTitle.font.Shadow = False    

    crt.Chart.Export "D:\WEBSITES\test.jpg"
    wb.SaveAs "D:\WEBSITES\test.xls"


    wb.Saved = True
    Set crt = Nothing
    Set wb = Nothing
    xlapp.Quit
    Set xlapp = Nothing


response.end()

%>

【问题讨论】:

您不应该在服务器环境中使用 Excel ......但是,无论如何人们都会这样做。您能否获取该代码,将其放入 VBS 文件并在服务器上以交互方式运行它并成功?该进程是否有权访问输出目录?您应该尝试捕获 SaveAs 返回的错误。你还没有向我们展示它是什么。 【参考方案1】:

在 Win2012、IIS 8.5 上找到它:(其他人对堆栈溢出的修复 - 这也适用于 Office 2000)

终于修好了。这是有效的方法,以防将来有人遇到同样的错误。

我们添加了两个文件夹:

C:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop

【讨论】:

以上是关于在运行 IIS8.5 的 Windows 2012 服务器上以经典 ASP 保存 XLS 工作表 - 部分有效的主要内容,如果未能解决你的问题,请参考以下文章

windows2012 IIS8.5 不能在此路径中使用此配置节

Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程

windows server 2012 r2 iis8.5 部署 asp.net 网站

IIS 8.5:应用程序池的虚拟帐户(IIS AppPool\应用程序池名称不可用

405 - 不允许用于访问此页面的 HTTP 动词。 [IIS 8.5] [Windows Server 2012 R2]

自定义 ServiceHostFactory 在 Windows Server 2012 和 IIS 8.5 上失败