Python+同花顺问财:我用一个生成器替代了审计大师的底稿模板
审计大师的底稿模板格式锁死、每年重复买。我把单体审计底稿做成了数据驱动的生成器:给一张五栏CSV,一键吐出带审计程序表、审定表、明细表、抽凭检查表的项目底稿。下面给核心代码和用法。 一、数据源:五栏CSV 每个报表行给五个数:期初审定、期末未审、调整借、调整贷、期末审定。示例格式: ```javascript 科目编码,科目名称,期初审定,期末未审,调整借,调整贷,期末审定 1001,库存现金,50000.00,62000.00,0.00,2000.00,60000.00 1122,应收账款,1200000.00,1350000.00,50000.00,0.00,1300000.00 ``` 这个CSV可以从任何财务软件科目余额表整理出来,也可以用问财导出上市公司财务宽表后按科目口径转换。 二、生成单张项目底稿的核心代码 用 openpyxl 生成一个科目的四联表(审计程序表+审定表+明细表+抽凭检查表): ```javascript import openpyxl from openpyxl.styles import Font, Alignment, Border, Side def create_project_wp(code, name, open_bal, unaudited, adj_dr, adj_cr, close_bal, out_path): wb = openpyxl.Workbook() ws = wb.active ws.title = "审计程序表" ws["A1"] = "项目底稿" ws["A2"] = "科目编码:%s" % code ws["A3"] = "科目名称:%s" % name ws["A5"] = "一、审计目标" ws["A6"] = "1.存在 2.完整性 3.权利和义务 4.计价和分摊" ws["A8"] = "二、审计程序" ws["A9"] = "1.获取或编制明细表,复核加计正确" ws["A10"] = "2.实施函证或替代程序" ws["A11"] = "3.检查期后回款/付款情况" ws["A13"] = "三、审定数" ws["A14"] = "期初审定" ws["B14"] = open_bal ws["A15"] = "期末未审" ws["B15"] = unaudited ws["A16"] = "调整借方" ws["B16"] = adj_dr ws["A17"] = "调整贷方" ws["B17"] = adj_cr ws["A18"] = "期末审定" ws["B18"] = close_bal ws["A20"] = "勾稽核对:期初+调整借-调整贷-期末=0" ws["A21"] = "差异:" ws["B21"] = round(open_bal + adj_dr - adj_cr - close_bal, 2) for row in ws.iter_rows(): for cell in row: cell.font = Font(name="仿宋_GB2312", size=12) wb.save(out_path) create_project_wp("1001", "库存现金", 50000, 62000, 0, 2000, 60000, "1001_库存现金.xlsx") ``` 三、批量遍历所有科目的入口 ```javascript import csv def batch_gen(csv_path): with open(csv_path, encoding="utf-8-sig") as f: for r in csv.DictReader(f): code = r["科目编码"] name = r["科目名称"] create_project_wp( code, name, float(r["期初审定"]), float(r["期末未审"]), float(r["调整借"]), float(r["调整贷"]), float(r["期末审定"]), "%s_%s.xlsx" % (code, name) ) batch_gen("五栏科目余额.csv") ``` 跑完会按行生成每个科目的xlsx底稿。 四、法定扩充的三张表 新修注册会计师法要求保留职业怀疑执行记录。可在项目底稿包里追加三张: ```javascript def add_legal_sheets(wb): ws1 = wb.create_sheet("职业怀疑声明") ws1["A1"] = "已按审计准则第1101号保持职业怀疑" ws2 = wb.create_sheet("注会法遵循声明") ws2["A1"] = "已核对党的领导/执业原则/禁止虚假报告等10项" ws3 = wb.create_sheet("函证控制") ws3["A1"] = "银行存款/应收账款函证汇总及替代测试记录" ``` 注师关键点 生成器只出底稿框架和勾稽,审计意见和风险判断必须由CPA填。工具负责格式合规,判断 still 在人。 哲学点题 重复交给代码,判断留给人,才是生产力。 互动钩子 你最想把哪个底稿环节写成函数?评论区报科目名,下篇贴代码。 ——会计师事务所的一名注册会计师