远离Excel工作簿/ VBA - 技术升级

问题描述:

这将是更多的意见问题,因为我无法在Google或我公司内的任何真正意见的SME上找到任何答案。远离Excel工作簿/ VBA - 技术升级

我不确定意见问题是否合适,如果不是,请随时删除,禁止我或任何规则的规定。

我正在研究一大套用于数学计算的非常旧的工作簿,这些工具不在生产中用于检查生产服务的结果。工作簿是非常古老的(大约12年以上),现在我称之为从最近十年的修补/修复'烂摊子'。

我一直在研究Handsontable(https://handsontable.com/)一个JS库,它提供了Excel这样的电子表格界面,可以处理单元格值的所有设置等......然后使用Python(或者Java,如果公司更喜欢的话为了使用J2EE)在服务器端或客户端执行一些heaver计算(数据查找和预测),我觉得只要从VBA和Excel本身进行迁移就可以提供性能提升,而Operations只是喜欢它。我觉得最初的工作可能需要很长时间,但我相信我可以在JS/Python/Java中创建一个通用的库集,一旦完成就会减少大量的重新编码因为80%的VBA是常见的财务公式,所以需要在VBA到JS/Python方面完成。

我担心的是,如果我们继续使用当前工作簿的路径在另一个2 - 3年内,它们将变得完全不可维护,很多事实是,对于VBA,我们没有适当的版本控制或使用现代自动化代码审查工具,我们可以利用新技术和长期错误的意愿获益,除了努力工作外,现在我们的开发人员和未来的同事都将成为最佳选择。

如果这个问题可以通过规则和版主,没有人有任何意见呢?这是值得吗?这是浪费时间吗?

注意:我不是经理,董事或任何有权决定上述建议的人,我只是一个感觉我的开发者......我们可以做得更好。

谢谢你的时间。

+0

CSV的数据存储是恕我直言要走的路。任何程序都可以使用,并且与excel高度兼容 – Pierre

+0

对于SO来说这可能不是一个恰当的问题(猜猜它属于程序员之类),但它仍然是一个很好的问题。我们做了完全相同的练习。从VBA中提取所有与数据库相关的代码,并将其移入一个我们可以用ajax调用的服务API。 excels本身已经成为我们应用程序中的一个模块。我们先编写了应用程序,然后开始逐一转换每个报告。通过使用快速应用取代非常缓慢的Excel报告,我们在管理工作中已经为每人每天节省近一小时。此外,更高层管理人员喜欢移动友好报告。 – Shilly

+0

让我澄清一下,我们已经有一个数据库用于生产/工作簿应用程序的使用,所以它的数据不是VBA,公式等数据......我只是想要对工作簿进行现代化以防止造成太多的技术债务,我们将会看到Workbooks,并且像“WTF是这样”? – Tempster102

因此,这可能不是每个人的答案,但我会给你我们决定首先投入时间的东西,因为这个方法已经被另一个应用程序用于将它从旧语言转移到Java。

我们已经发现了几个在线开源项目,用于将VB/VBA代码转换为Python。

例子:

一旦我们使用本地程序包,让MS互操作访问的Python代码的工作,我们将开始重构Python代码在Django项目(这个选择并不坚定,但它是我的首选; Django),包括为数据库访问创建包装模型。我们觉得我们可以为MS Interop部分制作一个包装器,让它作为一个Django项目运行。

最终的计划是让Django项目充当一个REST Web服务,以便为Python执行“繁重的数学/计算”功能,并且可以在更强大的服务器上提高性能。这个REST服务将回答来自Handsontable(https://handsontable.com/)JS电子表格的调用,其中包含所需的插件以处理所有当前的Excel公式,因此我们可以直接执行单元格值/样式的1:1副本(将Workbook转换为xlsm可以生成所有数据存储为XML)到Handsontable'布局数组';我想我们会把它放在一个数据库中。所以最终我们已经给出了15年以上的工作簿,并且一起从等式中删除了Excel。

目前(我的)原因使用Django是:

  1. ORM
  2. 独立的Django包使得减少reduent代码更容易(我知道这可能是与刚刚纯Python来完成,但我觉得它是个好理由把我的答案放在其他人中)
  3. 易于使用一些非常受欢迎的REST软件包来实现Web服务。
  4. 还有其他人,但我相信每个人都会明白我的观点。

和原因的Python:

  1. 运行在Linux上,运行VBA宏服务器端需要Windows(坏:VM成本相比,Linux和OS少开销)。
  2. 非常容易学习(无论如何感觉)
  3. 自定义方法装饰器将使标准利率适用于方法的返回金额,而无需计算实际函数中的利率代码(作为例如)

感谢