【问题标题】:Excel macro run from the web?Excel 宏从 Web 运行?
【发布时间】:2010-12-17 12:42:30
【问题描述】:

我收到了一个关键的宏,它需要一个充满发票的老式文件,谢天谢地,这是相当一致的。宏读取此文件,移动数据以使其一致,然后生成一个包含三个选项卡的电子表格,它几乎是三个 CSV。然后它从这三个 CSV 中生成另一个电子表格,其中每个发票都有一个标签。发票金额确实可以变化。

成功了,大家都很开心。我们希望以一定的安全性将其发布到网络上。现在,让用户:

1) 登录,上传旧学校文件并按下进程,然后会输出相同的电子表格,每个选项卡都是发票。

2) 将数据存储在数据库中,以供将来增长和使用这些数据以及报告。

我正在自学 ASP.NET 和 C#,我认为这将是一个很棒的学习项目。在我开始之前,这真的可以做到吗?在这种情况下其他人会推荐什么?我应该根据宏中的逻辑简单地重写还是有办法移植现有的 VBA 代码?

【问题讨论】:

  • 您可以在网络上共享一个文件夹并将文件存储在其中以只读方式吗?
  • 目前没有技术限制,因为所有这些都是理论上的,所以回答你的问题......现在是的。将来?必须评估影响。

标签: c# asp.net vba


【解决方案1】:

在 Web 应用程序中使用 Excel COM API 很困难。有一些安全问题需要解决。如果您想保留 excel 处理,那么您可以构建某种带外进程来监视上传目录,并在检测到新文件时启动将 excel 文件转换为旧宏使用的进程。

从 VBA 到 C# 的转换并不容易,因为所有的 VBA 代码都假设存在 excel,但情况可能并非如此。但是,您可以使用 COM API 在工作簿中调用宏。

【讨论】:

    【解决方案2】:

    您可以使用 Excel COM API 来完成。但这往往会导致内存泄漏,我不建议这样做。

    Microsoft 拥有 Excel Services,可让您在服务器上运行 Excel 电子表格。但它非常昂贵,可能不支持宏。

    SpreadSheetGear 或许可以做到。但是我自己没有测试过。

    我建议你用 C# 重写应用程序,你会得到一个更好的解决方案,而且它可能不会比让电子表格在服务器上运行更长时间。

    【讨论】:

    • 如何将基于 VBA 的代码转换为 VB.NET?似乎是一个更自然的进程。
    【解决方案3】:

    从 C# 驱动 Excel 很难做到 100% 正确。相反,从 VB6 应用程序驱动 Excel 非常容易。但是,从 Web 应用程序调用它会更难,因为您需要同时处理安全性和并发性(同时有 2 个用户会相互绊倒)。

    Microsoft 不支持在服务器上使用 Excel(Excel Services 除外),因此不要指望那里有任何帮助。 SpreadsheetGear 适合这种情况,但您必须为此付费。

    你说这会是一个很好的学习项目——我不同意;它可能会让你完全放弃编程。这种特殊的组合没有一个“好的”解决方案——它是一个寻找最不令人不快的黑客的案例。如果你想学习 ASP.NET 和 C#,我会说找另一个宠物项目。

    【讨论】:

    • 良好的反馈和诚实的回答。我可能不得不考虑 SpreadsheetGear,我可以根据这些发票的重要性来证明成本的合理性。不知WSS(Sharepoint)有没有什么?
    • 我猜 Excel Services 将成为 Sharepoint 的一部分。它回答了这个问题。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    相关资源
    最近更新 更多