大部分财务人员,都把Excel奉为神器,天天使劲钻研Excel的各种技术,其实Excel只不过是提供了一个方便展示的平台,对于处理数据,不要说和通过编程使用数据来比较了,就是对比同为Office套件的Access,其功能也要差很多。尤其是Excel的数据类型及对应的自动转换,长期使用是非常坑爹的。Excel有什么问题呢,我简单列举几个:
- 数据类型不明确,还带有很多自动转换,不仅给处理和比较数据带来困难,就是用程序来处理,原本数据里一个不小心,也会带来不一样的后果,比如时间日期类型,换一种写法,用Python+Openpyxl读出来就不同。
- 高耦合。Excel把数据的存放、处理、展示统统放在一起,一旦一个文件打不开,全部都完蛋。
- 可读性很差。一个复杂的表格几乎就是地狱,因为无论是引用,还是计算逻辑,还是具体到某个单元格中的公式,可读性都很差,很难简单看出表间的关系,以及哪些格子有关联。当然你可以选择给一个表格写一个说明,但是说明可能会比表格本身还复杂,而且Excel还很易变,随便手工改几个格子,很多事情就白干。你要是想把所有不想让人修改的格子都保护好,到最后你会发现可能是搬起石头砸自己的脚。
- Excel的文件的不稳定。Excel文件的格式有很多,先不说xml,csv这些老财们几乎完全不懂的东西,就是xlsx和xls文件,在实际使用中,也可能由于大家的Excel版本不同,甚至还有使用WPS处理等因素,导致最后到了某个人那里,文件就是打不开,白白浪费时间。
- 同步功能几乎为0。大家应该都使用过腾讯文档之类,能够很好的处理多人同时编辑的效果。但是使用单机版的Excel,想和别人交流一下,文件改来改去每次都要确定版本,不然到了最后不知道谁是最新的。
在原来的公司,我写过一个合同管理系统,其目的是为了解决一本合同台账,多个部门各自登记的问题。每次有数字需要核对,都需要把三个表互相检查一下你有我无的内容,简直就是浪费生命。这种流程性的东西,当然是使用WEB程序最为方便快捷。而且实践证明,用了这个东西之后,确实提高了效率,完全无需再维护电子系统,就连Excel表格也能直接下载回来。
回想起来这还是我第一次用Django写一个可堪一用的东西,收效还是挺不错的,当时是在自己翻译完了Django 2 By Example之后,趁热打铁写的,从我的Github上可以看到,这个合同管理系统的1.0版本上线时间是2018-11-13,在同一天,实际上我也完成了Django 2 By Example翻译的校对。
其实还得感谢老东家,让我在工作之余,还能使用开发来帮助公司简化流程,方便财务操作,哪怕是我在被工作调动之前的4月份,还根据内审的需求,开发了可以支持预付和增值税,以及自动下载Excel表格的功能,让这一个小软件变得更加完备。
现在换到了新公司,发现有一个同样迫切的需求,就是合同台账。现在的合同台账一个项目就是一个Excel文件,其中纷繁复杂十几张表,既没有简单的对应关系,也无法看出项目目前的概况,以后项目多了,要查点什么东西,一个一个翻过去,确实比较麻烦。
目前已经根据初步的想法,拟定了项目-对应合同-对应合同的具体变动等数据,再配上增值税发票对应的信息,应该就齐活了。有空的话可以写一个简易的版本。技术栈我也初步设想了,就使用熟悉又陌生的Django 3.x,加上老朋友PostgreSQL,前端就不折腾了,老老实实用个BootStrap风格算了,省的花时间在这上边。