C# 从ASP.NET页面运行.xlsm文件

C# 从ASP.NET页面运行.xlsm文件,c#,asp.net,excel,vba,C#,Asp.net,Excel,Vba,我想从ASP.NET网页运行一个.xlsm文件,该文件使用VBA代码生成一些.xml文件。就我的情况而言,建议的措辞似乎不起作用 我在nmy TestWebApp中尝试了以下内容。 我的Webform1.aspx <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head&

我想从ASP.NET网页运行一个.xlsm文件,该文件使用VBA代码生成一些.xml文件。就我的情况而言,建议的措辞似乎不起作用

我在nmy TestWebApp中尝试了以下内容。 我的Webform1.aspx

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"  OnClientClick="return Callxlsm(); "/>
    </div>
    </form>
</body>
    <script type="text/javascript">
        function Callxlsm() {
            alert("Hello");
            var MyObject = new ActiveXObject('WScript.Shell');
            MyObject.Run('file:///K:\NLMData\POC\TestWebApp\TestWebApp\Files\AMM_ModelWizard.xlsm');
        }
    </script>
</html>

不确定是什么问题,请提供任何指针。另外,我们是否可以从页面将参数传递到此Excel文件,以便Excel文件以某种方式处理这些参数并生成XML文件?

您应该尝试使用EPPlus来实现此目的。看看这个问题

这篇文章说EPPLUS中没有内置对.xlsm文件的支持。我不想修改.xlsm文件。我所需要的就是从webform.aspx下载那个文件,然后得到一些output@Programmerzzz如果仔细阅读该问题,您将看到可以创建自动运行宏来生成所需的XML文件。之后,您可以解析(或任何您想要的)作为结果如果我理解正确,我们需要通过epplus添加VBA代码来重新创建相同的.xlsm文件。如果我错了,请更正。但在我的情况下,用户很久以前就已经在使用此文件了,他只想从web应用程序调用此文件,因此用户不需要在其机器上复制它。我的第二个选择是在网页中创建相同的UI,模仿excel在c#中使用的VBA代码,并转储我认为更难的.XML文件…因此,如果我理解正确,您已经获得了xlsm文件,因此您可以轻松地编辑VBA代码,以便在打开的文件上运行“event”@Programmerzzz宏,出于安全性和性能考虑。这就是为什么SharePoint不在已发布的Excel文件中运行宏,即使它支持数据连接和公式。您试图用宏解决的实际问题是什么?您是否考虑过宏会将您锁定在Office 365和SharePoint online之外?您不能。宏需要Excel本身才能运行。你想干什么?可能有更好的方法来实现这一点,例如使用数据连接而不是宏来加载数据。在服务器上运行宏不是一个好主意,因为它们太重,而且对于web应用程序这样的高流量环境,通常(总是)编写得很糟糕。
    using System;

namespace TestWebApp
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write("Hello");
        }
    }
}