首页 » 脚本文章 » python操作excel和word出审计报告(凭证请输入借方贷方默认)「python审单录凭证」

python操作excel和word出审计报告(凭证请输入借方贷方默认)「python审单录凭证」

admin 2024-07-23 23:57:18 脚本文章 0

扫一扫用手机浏览

文章目录 [+]

每一张问题凭证书写的格式如下:

2017年8月35#凭证,买电脑,金额4500元,未取得发票,以收据入账;

从财务软件中可以导出凭证序时簿的excel命名为“叙时簿.xlsx”sheet1改名为“凭证表”,表头如下

python操作excel和word出审计报告(凭证请输入借方贷方默认) python操作excel和word出审计报告(凭证请输入借方贷方默认) 脚本文章
(图片来自网络侵删)

2017对应会计年 8对应会计月 35对应凭证号 买电脑对应业务说明 4500对应借方发生额或贷方发生额,这些数据都能在凭证表中获取

操作

在最后再插入一列,命名为“审计说明”

python操作excel和word出审计报告(凭证请输入借方贷方默认) python操作excel和word出审计报告(凭证请输入借方贷方默认) 脚本文章
(图片来自网络侵删)

用到python及xlwings和python-doc两个库,安装都挺简单,pip install 库名 就行了。

不写了,自己看代码吧,自己用的,凑活能用,第一次头条发代码,不知道现实出来什么样 的

import xlwings as xwfrom docx import Documentfrom docx.oxml.ns import qnbk_name=\"序时簿.xlsx\"#设定excel文件默认名sht_name=\"凭证表\"#设定默认sheet名#分别为年,月,凭证号,摘要,审计说明信息,借方发生额,贷方发生额,\"B\",\"C\",\"E\",\"F\",\"Q\",\"K\",\"L\"分别为默认的列y,m,v,d,inf,ad,ac=\"B\",\"C\",\"E\",\"F\",\"Q\",\"K\",\"L\"#提示用户输入工作簿名 不输入则为默认的bk_name=input(\"请输入 excel工作簿名称(默认为序时簿.xls):\") or bk_name#提示用户输入sheet名 不输入则为默认的sht_name=input(\"请输入 sheet名称(默认为凭证表):\") or sht_name#打开工作簿bk=xw.Book(bk_name)#打开sheetsht=bk.sheets(sht_name)y=input(\"请输入 年 所在的列:\") or ym=input(\"请输入 月 所在的列:\") or mv=input(\"请输入 凭证号 所在的列:\") or vd=input(\"请输入 摘要 所在的列:\") or dinf=input(\"请输入 审计说明 所在的列:\") or infad=input(\"请输入 借方发生额 所在的列:\") or adac=input(\"请输入 贷方发生额 所在的列:\") or ac#框一下这个sheetrng=sht.range('A1').expand('table')#计算sheet一共多少行nrows=rng.rows.count#定义一个类,用来放记录class Remark: def __init__(self,year,month,voucher_no,description,info): self.year=year self.month=month self.voucher_no=voucher_no self.description=description self.info=infols=[]def getData(): for nrow in range(2,nrows): if sht.range(inf+str(nrow)).value != None:#如果“审计说明这一列有数据” l=Remark(no=nrow-1, year=sht.range(y+str(nrow)).value, month=sht.range(m+str(nrow)).value, voucher_no=sht.range(v+str(nrow)).value, description=sht.range(d+str(nrow)).value, info=sht.range(inf+str(nrow)).value) if sht.range(ad+str(nrow)).value: l.amount=sht.range(ad+str(nrow)).value else: l.amount=sht.range(ac+str(nrow)).value ls.append(l) return lsdatas=getData()ds=[]for i,data in enumerate(datas): ds.append(\" \"+str(i+1)+\"、\"+str(data.year)+\"年\"+str(data.month)+\"月\"+str(int(data.voucher_no))+\"#\"+\"凭证,\"+ str(data.description)+\",金额\"+'{:.2f}'.format(data.amount)+\"元,\"+str(data.info)+\";\")doc =Document()doc.styles['Normal'].font.name = u'宋体'doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')for d in ds: doc.add_paragraph(d) doc.save('temp.docx')

相关文章