Python 三表自动填数:审定数填入 Word 表格
问题 报表是审计报告的主体。手工把审定数抄进 Word 表格,行多易错位。既然 133 已把 audited 聚成 dict,本篇写 fill_statement 把"项目/期末/期初"循环填进表格,换数据不换结构。 示例代码 plaintext ```javascript from docx import Document from docx.oxml.ns import qn from docx.shared import Pt def set_cn_font(run, name="仿宋_GB2312", size=12): run.font.size = Pt(size); run.font.name = name rpr = run._element.get_or_add_rPr() rf = rpr.find(qn('w:rFonts')) if rf is None: rf = rpr.makeelement(qn('w:rFonts'), {}); rpr.append(rf) rf.set(qn('w:eastAsia'), name) def fill_statement(doc, title, items): h = doc.add_heading(title, level=1) for r in h.runs: set_cn_font(r, "宋体", 16) t = doc.add_table(rows=1, cols=3); t.style = "Light Grid" hdr = t.rows[0].cells for c, txt in zip(hdr, ["项目", "期末余额", "期初余额"]): c.text = txt; set_cn_font(c.paragraphs[0].runs[0]) for name, cur, prev in items: c = t.add_row().cells c[0].text, c[1].text, c[2].text = name, str(cur), str(prev) for cc in c: set_cn_font(cc.paragraphs[0].runs[0]) return doc doc = Document() items = [("资产总计", 6200, 5000), ("负债总计", 2400, 2000), ("营业收入", 1500, 1300)] fill_statement(doc, "资产负债表(节选)", items) doc.save("bs.docx") ``` 关键点 - 每个 cell 填完都要 set_cn_font,否则表格内中文变默认字体,打印出来和正文不一致。 - 表头加"项目/期末/期初"三列,和审定数 dict 的 (name, cur, prev) 一一对应,结构固定。 - 三表(资产/利润/现金)共用一个 fill_statement,只换 items 和 title,是 133 data 的直接消费者。 小结 报表填数 = 循环写表格。三表共用一个函数,审定数一变、报告即更新,彻底告别手抄错位。 --- 你做报表最易错的是"正负方向"还是"重分类项目"?评论区聊。 如果有用,点赞收藏关注,留下审计难题。下期预告:附注自动生成进阶(从审定数+政策 dict 一键出注释)。 会计师事务所的一名注册会计师