python自动化办公---工资说明excel生成word再转换成pdf

简 介:

          此程序是解决在日常办公中,需要生成各种所需文档。通过python和一个固定的模板(本次需求是这样,也可以不固定),达到批量读取excel表格,然后填写到固定word模板中再转换成pdf格式。

关键词: python,自动化办公,docxtpl, tikinter, gui,桌面程序


 程序界面:

         程序功能说明:日期是默认当前时间的,也可以手动更改日期。当导入两个excel表格后,点击开始就会按照一定规则先将两个表格中的数据提取,存到word固定的格式内,再转换成pdf格式。以此达到批量生成pdf文档,自动化办公减轻负担。 

root = tk.Tk()
root.geometry("500x300")
c_row = 20
start=datetime.date.today().strftime("%Y年%m月%d日")

def w1():
   global file_path1
   file_path1 = filedialog.askopenfilename()
   text.insert(tk.INSERT, '第一个表格导入成功\n')
   text.update()
def w2():
   global file_path2
   file_path2 = filedialog.askopenfilename()
   text.insert(tk.INSERT, '第二个表格导入成功\n')
   text.update()
#定义一个文本方法
def e_label(text: str, default: str, readonly=False):
   global c_row
   tk.Label(root, text=text).grid(row=c_row, sticky=E)
   value = tk.StringVar(value=default)
   ent = tk.Entry(root, textvariable=value, width=20)
   ent.grid(row=c_row, column=1)
   if readonly:
      ent['state'] = 'readonly'
   c_row += 1
   return value

start = e_label("开始日期:", start)

 word模板样式

         word模板说明:这里是固定的模板,其实除了这种方法,也可以用html直接生成pdf,毕竟pdf本身就是html生成的。但是这种方法简单粗暴,后期便于维护和更改,只要改模板样式,整个结果也会改变。真香...     这里的{{ }} 中间的参数就是代码中要传入替换的参数(这个和jin2模板语法基本是一样的哦)

def fun():
   df2=pd.read_excel(file_path1,names=[---],converters={0:str})

   df1=pd.read_excel(file_path2,names=[---],converters={0:str})


   #遍历df2
   for row in df2.itertuples():
      #调研编号
      dybh=getattr(row,'---')
      print(dybh)
    
      #填写
      tpl = DocxTemplate('模板.docx')

      context = {
            'jine': jine,
            'dybh':dybh,
            'dyzl':dyzl,
            'ysxm':ysxm,
            'yssj':yssj,
            'yssf':yssf,
            'khh':khh,
            'zh':zh,
            'sj':start.get()
         }

       tpl.render(context)
       data_d=str(datetime.date.today())#时间

       b_name="D:\\" + dyzl+sf+cs+yymc+ysxm+data_d+".docx"
       tpl.save(b_name)

pdf结果:

 

         pdf生成说明:这个生成方法

 # 设定pdf要保存的位置
         pdf_path = "D:\\" + dyzl+sf+cs+yymc+ysxm+data_d+".pdf"  # 就保存在当前文件夹下

         # 下面是实现代码
         gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
         # 启用word功能
         wd = Dispatch('Word.Application')
         # 用windows下的word功能以只读方式打开我们要处理的word文档
         doc = wd.Documents.Open(docx_path, ReadOnly=1)

         # 输出方式
         doc.ExportAsFixedFormat(pdf_path, constants.wdExportFormatPDF, Item=constants.wdExportDocumentWithMarkup,
                                 CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
         doc.Close()

         # 退出word功能
         wd.Quit(constants.wdDoNotSaveChanges)
         time.sleep(5)
         os.remove(b_name)

另:本工作室长期接单,放单。涉及领域有python java 前后端 机器学习 网站 系统 app 小程序等。

需要接单加v备注技术领域:ad2021wyz  或q 进接单群的加 2234590550 备注清楚领域

需要源码和代做需求的加v备注客户:ad2020wyz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值