摆脱Excel工作簿/VBA - 技术升级

5
这将更多是一个观点问题,因为我在谷歌上找不到答案,而且我公司内的任何SME都没有真正对此发表意见。如果不适合提出观点问题,请随时删除此内容,禁止我或者其他违反规定的人。
我正在处理一组非常古老的工作簿,用于数学计算,这些工作簿并未在生产中使用,而是用于检查生产服务的结果。这些工作簿非常古老(有些已经超过12年),现在从最后十年的修补/修复中可以看出它们已经成为了一片“混乱”。
我一直在研究 Handsontable (https://handsontable.com/) ,这是一个JS库,提供类似Excel的电子表格界面,可以处理所有单元格值的设置等操作。然后使用Python(或Java,如果公司更喜欢使用J2EE)在服务器端或客户端进行一些较重的计算(数据查找和投影)。我认为仅仅从VBA和Excel本身转移就会提供性能提升,运营部门会非常喜欢。
我认为最初的工作量会很大,但我相信我可以创建一组通用的库,无论是在JS/Python/Java中,一旦完成,就可以减少大量需要在VBA到JS/Python方面重新编码的工作,因为80%的VBA是常见的财务公式。
我的担心是,如果我们继续使用当前的工作簿,再过2-3年它们将变得完全无法维护,加上使用VBA时我们没有适当的版本控制或现代自动化代码审查工具,而使用较新的技术将是对我们的开发人员现在和未来同事最好的选择,尽管需要付出艰苦的努力。
如果这个问题符合规则和管理员的要求,有人对此有什么意见吗?这值得吗?这是浪费时间吗?
注:我不是经理、主任或任何有权做出上述决定的人,我只是一个开发人员,感觉我们可以做得更好。
谢谢你的时间。

CSV作为数据存储的方式,在我看来是最好的选择。它可以被任何程序使用,并且与Excel高度兼容。 - Pierre
让我澄清一下,我们已经有一个数据库供生产/工作簿应用程序使用,所以不是数据本身,而是VBA、公式等等。我只是想现代化工作簿,以防止技术债务过多积累,因为我们会到达一个看着工作簿就像“这是什么鬼”的地步。 - Tempster102
1
在我个人看来,摆脱 Excel 是最好的部分,但这主要是因为我们在报告中不需要任何 Excel 功能。我们的 Ops 从来不需要在他们的报告中编写 Excel 公式,他们基本上只是使用 Excel 作为查看数据库和对生产数据进行一些预格式化计算的方式。通过优化的 SQL、快速的后端和轻量级的应用程序库,我们现在可以提供准实时计算。如果您的 Ops 需要使用非平凡的 Excel 功能,像 Office 365 或 SharePoint 可能会更好。 - Shilly
1
我已经对大约150个岸上/离岸运营人员进行了调查,发现他们中的大多数人除非为生产服务器提供静态工作簿(例如正确的金额),否则基本不会手动编辑单元格,因此实际上只是一个静态布局,有几个具有定义名称的工作表,然后在VBA中设置这些名称;有些是通过公式完成的,但是有JS库可以处理所有Excel公式,所以这不是问题。将工作簿转换为XLSM使工作表成为CVS,因此我可以直接将其转换为Handsontable数组 :) 难点在于VBA。 - Tempster102
@Shilly;我根据平均计算时间为每个计算3-4分钟进行了估算,因此我估计在Ops和回归之间我们可以节省1000多小时的时间。我只是不确定是否应该考虑放弃Excel,或者改进我们目前所拥有的东西;我称之为“后期适配”,以加快一些速度,但不完全重写它,就像你解释的那样。至于移动性,这不是在Corp VPN之外使用的东西,所以它只是一个内部应用程序。谢谢! - Tempster102
显示剩余2条评论
1个回答

0

所以这可能不是每个人的答案,但我将告诉你我们决定首先投入时间的方法,因为这种方法已经在另一个应用程序中使用,将其从旧语言移动到Java。

我们在网上找到了几个开源项目,用于将VB/VBA代码转换为Python。

例如:

一旦我们使用本地包使Python代码能够访问MS Interop,我们将开始将Python代码重构为Django项目(这个选择并不确定,但这是我的首选; <3 Django),包括创建用于DB访问的包装器模型。我们觉得我们可以为MS Interop部分创建一个包装器,以便它可以作为Django项目运行。

最终计划是将Django项目仅作为REST Web服务,用于执行Python的“重型数学/计算”功能,并且可以在更强大的服务器上运行,从而提高整体性能。这个REST服务将回答来自Handsontable(https://handsontable.com/)JS电子表格的调用,该电子表格具有处理所有当前Excel公式所需的插件,因此我们可以直接将单元格值/样式(将工作簿转换为xlsm会使所有数据存储为XML)复制到Handsontable“布局数组”中;我认为我们将把它放在数据库中。因此,最终我们现在已经给出了工作簿15年以上的寿命,并且已经完全排除了Excel。
目前(我的)使用Django的原因是:
  1. ORM
  2. 独立的Django包使减少冗余代码更容易(我知道这可以只用纯Python来完成,但我觉得这是一个很好的理由,可以写在我的答案中供其他人参考)
  3. 使用一些非常流行的REST包之一很容易实现Web服务。
  4. 还有其他原因,但我相信每个人都能理解我的观点。
Python的原因:
  1. 可以在Linux上运行,但如果要在服务器端运行VBA宏,则需要Windows(与Linux相比,VM成本更高且操作系统开销较少)。
  2. 非常容易学习(至少我是这么觉得的)。
  3. 自定义方法装饰器可以使应用标准利率到方法的返回金额变得更加简单,而无需在实际计算金额的函数中编写利率代码(以此为例)。

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接