财务AI化实录:10家银行Excel格式,没两家相同

上周我做了一件之前从来没做过的事:
我把公司10家银行的Excel导出文件,一个一个打开,然后写Python代码,把它们的数据格式全部搞清楚。
说实话,我以为这件事会很简单。
银行流水嘛,不就是日期、摘要、金额、余额,几列数据?我以为写一套通用的读取方式,稍微改改列名,10家银行就搞定了。
结果我发现,我完全低估了这件事的复杂程度。
标题行在第几行?每家银行的答案都不同
这是我遇到的第一个坑。
一般读取Excel,默认第1行是标题、第2行开始是数据。我写完代码,先试了宁波银行。
结果程序报错:字段名找不到。
我打开原文件一看——宁波银行的Excel,前两行是公司名称和账户信息,标题行在第3行,数据从第4行才开始。
好,改一下。我把宁波银行单独处理。然后试中信银行。
又报错。
中信银行的Excel文件,居然有14行的文件头说明(包括账户信息、查询区间、余额等),标题行在第15行,数据从第16行开始。
我当时看到这个的时候,有点愣:同样是银行、同样是导出流水,格式差这么多?
我后来把10家银行挨个列了一遍,发现标题行的位置从第1行到第15行都有。每家银行都有自己的判断方式——有的靠固定的行号,有的要用特定关键词(比如”交易日期”这个词出现的那行)来动态查找。
代码里最后出现了10段几乎完全不同的解析逻辑。

收入和支出,每家银行的表示方法也不一样
这是我遇到的第二个坑,也是最让我哭笑不得的一个。
银行流水的核心数据就是:钱进来了还是出去了,金额是多少。
但我研究下来发现,各家银行的表达方式简直是”百花齐放”:
方案一:分两列(最常见) – 一列”借方金额”(支出),一列”贷方金额”(收入) – 没发生的那笔就是空值或者0 – 这是最规范的格式,代码最好处理
方案二:合并一列 + 方向标记 – 中国银行是这样的:金额都在同一列,另外有一列”账户性质”,标注的是”往账”(支出)还是”来账”(收入) – 要先读方向列,再判断金额正负
方案三:合并一列 + 正负号 – 有的银行直接用正负号来区分,正数是收入,负数是支出
三种格式,三套判断逻辑。不能混用,否则方向就反了。
日期格式:这是重灾区
如果说前两个坑还能理解,那日期格式的混乱真的让我刷新了认知。
我在代码里最后遇到了三种完全不同的日期格式:
格式一:Excel数字序列号
有些银行导出的xls文件,日期那列显示的不是”2026-03-28″,而是一个数字,比如46117。
这是Excel内部的”日期序列号”——从1900年1月1日算起的天数。你要把这个数字转回成真实日期,需要专门的换算。
第一次看到这个数字的时候,我以为是数据损坏了。
格式二:YYYYMMDD纯数字
有的银行导出是20260328这样的8位纯数字,看起来像日期,但Python默认不会识别,要手动解析。
格式三:带时间的完整字符串
有的银行是2026-03-28 09:15:32,带上了精确到秒的交易时间,格式倒是规范,但要把时间部分截掉才能用。
三种格式,都要单独处理。
最奇特的格式:一笔交易占两行
10家银行里,最让我意外的是通商银行。
我读它的文件时,一直觉得数据量不对——数据行数是其他银行的两倍左右。仔细看才发现:
它的每一笔交易,占了两行。
第一行是基本信息(日期、金额、摘要);第二行是补充信息(对方账户名称、附言等)。
这两行要合并成一条记录,才能正常处理。
我当时的第一反应是:这……是手动设计出来的格式吗?还是系统导出的?
后来我认了,把奇数行和偶数行分别读取然后合并。

还有两家银行,余额根本不在文件里
工商银行和浙商银行的导出文件,没有余额列。
我一开始以为是我读取的方式不对,反复检查代码、反复打开文件确认。最后确认:这两家银行的Excel导出格式,确实不包含余额数据。
这对日报表来说是个问题,因为日报要体现每家银行的期末余额。
目前的处理方式是:这两列的余额需要手动补录。
如果你也要对接多家银行的导出数据,有一件事建议先做:把每家银行的Excel打开,手动标注一下”标题行在第几行、收入支出怎么区分、日期是什么格式”。这张表格做出来,后面无论是自己写代码还是让AI来写,都能省很多来回。
做完这件事,我有一个很强烈的感受
我们平时用Excel看银行流水,打开来看看,数据好像差不多。
但当你要写代码来自动处理它,你就会发现——格式上的每一个细微差别,都是一道坎。
我做了10年财务,每天都在看银行流水,但我从来没有意识到:这10家银行的数据,在格式层面,几乎没有任何统一标准。
每家银行的开发团队,大概都是自己定的导出格式,没有互相参考,更没有遵循什么行业规范。
结果就是:每家银行,都需要单独写一段解析代码。
这件事花了我大概两天时间。
如果是我自己在没有AI辅助的情况下写这些代码,可能要花两周,而且大概率中途放弃。AI的作用,在这种”样板式但数量多”的工作上,体现得特别明显。
下一步
解析代码写完之后,数据能读出来了,但还有一个更复杂的问题等着我:
这些交易记录,该对应哪个会计科目?
宁波银行转出一笔38000元,对方名称是”XX人力资源有限公司”——是工资?还是劳务费?还是用工服务费?
这个判断,比格式解析要难得多。
下一篇我来聊这个。
如果你们公司也有多家银行账户要每天对账,看到这篇你应该懂我说的是什么感觉了——那种”明明是同一件事,每家银行偏偏都不一样”的无奈。
欢迎在评论区告诉我,你们那边对账最麻烦的是哪个环节。
我是静静,在工业制造企业做财务,正在做一个11周的财务AI化实验。
记录真实的尝试过程,包括成功和失败。
关于作者
静静:财务经理,正在用11周时间推进公司财务AI化改造。这里记录真实的过程、卡点和结果。
本系列导航
-
第01篇|一个没有编程背景的财务经理,打算用11周改造整个部门 -
第02篇|财务人最真实的焦虑:不是怕AI,是怕落后那一批人 -
第03篇|做财务AI化的第一周,我被3件事打了脸 -
第04篇| 财务AI化实录:10家银行Excel格式,没两家相同(当前)
你们公司有没有类似的问题?欢迎留言,我们来聊聊。
📱 AI财务实战
关注公众号,获取每周财务AI化实战记录
🎁 限时免费领取
财务AI化岗位诊断表
填3分钟,看清你的岗位每月浪费多少小时、哪些任务最值得先改

扫码加微信,发「诊断表」免费领取
微信号:A2025kuaiji
夜雨聆风