Excel宏从网络运行?

时间:2009-11-17 16:28:11

标签: c# asp.net vba

我已经交了一个关键的宏,它带有一个装满发票的旧学校档案,幸好这是非常一致的。宏读取此文件,移动数据以使其一致,然后生成三个选项卡表单,这几乎是三个CSV。然后它生成这三个CSV的另一个speadsheet,其中包含每个发票的选项卡。发票数量确实可以变化。

它有效,每个人都很开心。我们希望通过一些安全措施将其发布到网上。现在,请让用户:

1)登录,上传旧的学校文件并按下流程,然后将每个标签作为发票吐出相同的speadsheet。

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用Excel COM API执行此操作。但这往往会导致内存泄漏,我不会推荐它。

Microsoft具有Excel Services,允许您在服务器上运行Excel Spreadsheets。但它非常昂贵,可能不支持宏。

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

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

答案 1 :(得分:1)

使用Web应用程序中的Excel COM API很困难。存在一些非常重要的安全问题需要解决。如果你想保留excel处理,那么你可以构建一些带外进程来监视上传目录,当它检测到一个新文件时,启动一个转换excel文件的过程,就像旧的宏一样。

从VBA到C#没有简单的过渡,因为所有的VBA代码都假设存在excel,而情况可能并非如此。但是,您可以使用COM API在工作簿中调用宏。

答案 2 :(得分:1)

从C#驱动Excel非常难以100%正确。相反,从VB6应用程序驱动Excel非常容易。但是,从Web应用程序调用它会使其变得更难,因为您需要同时处理安全性和并发性(两个用户会同时跳过彼此)。

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

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