从网上运行的Excel宏?

问题描述:

我已经递交了一份重要的宏文件,其中包含一张满是发票的旧学校文件,幸运的是相当一致。宏读取这个文件,移动数据使其保持一致,然后生成三个选项卡的电子表格,这几乎是三个CSV文件。然后它生成这三个CSV的另一个电子表格,其中每张发票都有一个标签。发票金额可能真的有所不同。从网上运行的Excel宏?

它的作品,每个人都很高兴。我们希望以一定的安全性将其发布到网络上。现在,让用户:

1)登录,上传旧学校文件,然后按压过程,然后将每个标签作为发票吐出相同的电子表格。

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

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

+0

您可以在网络上共享文件夹并将文件存储在那里以进行只读吗? – CheeseConQueso 2009-11-17 16:44:47

+0

现在没有技术限制,因为所有这些都是理论上的,所以要回答你的问题......现在是的。在将来?将不得不评估影响。 – ichauvin 2009-11-17 16:52:36

从Web应用程序使用Excel COM API很困难。有一些安全问题是不重要的。如果你想保留excel处理,那么你可以建立某种带外处理来监视上传目录,当它检测到一个新文件时,开始转换excel文件,就像旧宏一样。

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

你可以用Excel COM API来做到这一点。但这往往会导致内存泄漏,我不会推荐它。

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

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

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

+0

将基于VBA的代码转换为VB.NET如何?看起来像一个更自然的进展。 – ichauvin 2009-11-18 18:01:04

从C#驾驶Excel令人惊讶地很难100%正确。相反,从VB6应用程序驱动Excel非常容易。但是,从Web应用程序调用它会使其变得更加困难,因为您需要同时处理安全性和并发性(同时2个用户会相互访问)。

微软不支持在服务器上使用Excel(除了Excel Services),所以不要期望有任何帮助。 SpreadsheetGear适用于此,但您必须为此付费。

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

+0

良好的反馈和诚实的答案。我可能不得不考虑SpreadsheetGear,根据这些发票的重要性,我可以证明成本合理。我想知道WSS(Sharepoint)有什么? – ichauvin 2009-11-17 22:12:47

+0

我猜Excel Services会成为Sharepoint的一部分..这会回答这个问题。 – ichauvin 2009-11-17 22:32:44