        d=Document(f/'source.docx');t=d.tables[0];headers=output.get('headers',[]);ck('模型给出逻辑列名',headers==['item','planned','actual']);rows=[[c.text for c in r.cells] for r in t.rows[2:]]
        with (f/'table.csv').open('w',newline='') as stream:w=csv.writer(stream);w.writerow(headers);w.writerows(rows)
        back=list(csv.reader((f/'table.csv').open()));ck('CSV数据行没有被合并表头污染',back[1:]==[['A-01','5','4'],['B-02','8','8']]);ck('原生横向合并确实存在',t.cell(0,1)._tc is t.cell(0,2)._tc);ck('原生纵向合并确实存在',t.cell(0,0)._tc is t.cell(1,0)._tc);result={'headers':back[0],'rows':back[1:],'source_grid':[[c.text for c in r.cells] for r in t.rows]};art+=['table.csv'];add_native(f/'source.docx')
