我有来自我们客户的要求,在那里,我们基本上必须“解析”来自不同来源的PDF文件。
我们提出的解决方案是“阶段1”(因为我们有很短的时间去市场,并将为他们节省大量的时间)
我们正在探索的第一个解决方案是在步骤2中使用VBA/Excel )。他们将他们的脏输出粘贴到Excel中,然后运行我们的清理宏。Excel很适合这类东西--在Excel电子表格中来回移动和擦拭数据。我们用一个特定的“源文件”做了一个概念的证明,结果非常好。大约半天时间来开发这个“擦洗脚本”.
够简单了吧?不怎么有意思。此脚本仅适用于来自一个特定源的一个特定文件类型。我们将有10个不同的来源,每个可能有3-10个不同的文件类型。这意味着最终,我们可能会得到一个巨大的Excel宏,其中包含120个非常具体的“擦除脚本”。所以我担心的是这里的长期可维护性。我们还可能碰到以前从未见过的文件,这些文件可能会“破坏”我们的擦除脚本,并且必须快速地重新编写/更改为擦除脚本.我从未使用过,使用VBA Excel宏的经验也很少--但这里似乎是一个很好的例子。
有谁可能做过类似这样的事情的人智慧的话吗?巨大的VBA宏像什么会导致这里的噩梦呢?VSTFO是一个很好的替代方案,可以让我拥有“易于移动/删除数据”的功能,但具有可伸缩性和健壮性吗?老实说,我的第一反应是使用动态编译的脚本从数据库中提取纯.NET解决方案,使用我们的Syncfusion进行清理/擦洗……但也许这是过火了。
发布于 2009-11-19 16:05:31
首先,不管什么情况,你都需要擦洗程序。事实上,Excel/VBA在维护此功能方面并不比其他许多平台差得多。
您可以使用Userform添加一个界面,或者玩自动检测游戏,吐出任何它不理解的“新”文件格式。也有几种健壮的错误处理方案可用,因此没有必要担心事情会被破坏。
一家石油公司雇我写了一个Excel应用程序,它使用了4个Userforms和5000多行VBA作为工具,帮助其会计师每月进行合资报告。该应用程序使用了4年,其寿命结束,因为接口是如此熟悉和易于使用。
...sorry对此漫不经心,但有一种“看不起”VBA的倾向,因为很少有“真正的程序员”使用它.
发布于 2009-11-18 14:46:57
VBA比VSTO容易得多。好的,VBA可能不是一种很好的语言,但至少它提供了对Excel对象模型的访问权限。基于VBA的解决方案可能比构建在VSTO上的解决方案更稳定。
我建议使用VBA,如果您关心可维护性,请考虑将“擦除脚本”存储在单独的文件中。你可以
(a)每个擦除脚本都有一个文件,每个宏具有相同的名称;您的外接程序可以为任何给定的输入文件加载(并在其中执行代码)适当的文件。
(b)每个擦除脚本都有一个文本文件,每个脚本都带有相同宏的文本;您的外接程序可以在运行时将其作为一个新模块创建--或者导入到它自己中,或者导入到临时工作簿中。这样做的效率较低,但在版本控制系统中发挥得更好,因为您可以在文本文件的不同版本之间进行区分,但在两个Excel工作簿中对模块进行区分并不容易。
在这两种情况下,您都可以将擦除脚本存储在共享文件夹中,以便在需要修改脚本时进行集中更新。
发布于 2009-11-18 15:07:08
我喜欢用C#编程,但我讨厌VSTO。
我有两个主要问题:。
sheet.get_Range("A1:B1", System.Type.Missing);这样可怕的函数调用,缺少可选参数的位置。有很多人使用VSTO,但是在Excel平台上花了很多年时间,我发现在这一点上几乎没有什么迁移的理由。但是,考虑一下是否需要在C#/.NET中做一些在VBA中无法实现的非常酷的事情(例如反射)。
您可以在VBA中编写非常好的代码;它会收到很多坏消息,因为这是一个不会因为编写不好的代码而惩罚您的环境,而且任何人都可以使用VBA。
这可能只是一个脾气暴躁的开发人员对VBA而不是VSTO有经验的抱怨。所以说了所有这些--如果你不熟悉VBA,你最好直接去VSTO。我不确定微软打算对VBA做些什么;VSTO应该是未来。
https://stackoverflow.com/questions/1756355
复制相似问题