代码自动生成Excel表格

Posted 走python的路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码自动生成Excel表格相关的知识,希望对你有一定的参考价值。

在实际的工作中,经常会遇到,把一个表信息 颠过来倒过去的情况。这会产生大量的重复工作。

比如说:发货表里头记录了 很多客户发货订单信息。但是我们给客户发货的时候,需要制作一张送货单,告诉客户 货物的详情。

这个时候如果代码可以搞定,就可以减少很多不必要的工作啦!

截图比较随意,大致就是这个意思了。

下面是代码,截图太恶心了 不理解需求的可以看下。

import xlwings as xw

def delivery_doc(l,src,dst,model): wb = xw.Book(r\'%s\'%src) ws = wb.sheets["2021年"] ws.activate i = l[0] order_name = ws.range(\'c%s\'%i).value order_place = ws.range(\'f%s\'%i).value order_id = ws.range(\'p%s\'%i).value receiver = str(ws.range(\'g%s\'%i).value)+""+str(int(ws.range(\'h%s\'%i).value)) goods_name = ws.range(\'k%s\'%i).value goods_model = ws.range(\'l%s\'%i).value goods_amount = ws.range(\'m%s\'%i).value wb1 = xw.Book(r"%s"%model) ws1 = wb1.sheets[\'牙膏\'] ws1.range(\'c5\').value = order_name ws1.range(\'g5\').value = order_place ws1.range(\'c8\').value = order_id ws1.range(\'g9\').value = receiver ws1.range(\'b12\').value = goods_name ws1.range(\'c12\').value = goods_model ws1.range(\'d12\').value = goods_amount for j in range(1,len(l)): i= l[j] order_name = ws.range(\'c%s\'%i).value order_place = ws.range(\'f%s\'%i).value order_id = ws.range(\'p%s\'%i).value receiver = str(ws.range(\'g%s\'%i).value)+""+str(int(ws.range(\'h%s\'%i).value)) goods_name = ws.range(\'k%s\'%i).value goods_model = ws.range(\'l%s\'%i).value goods_amount = ws.range(\'m%s\'%i).value if ws1.range(\'c5\').value == order_name: if ws1.range(\'b12\').value == goods_name: ws1.range(\'a%s\'%r).value += goods_amount r = 12 + j ws1.api.Rows(r).Insert() ws1.range(\'a%s\'%r).value = \'%s\'% (j+1) ws1.range(\'b%s\'%r).value = goods_name ws1.range(\'c%s\'%r).value = goods_model ws1.range(\'d%s\'%r).value = goods_amount ws1.range(\'e%s\'%r).value = \'\' ws1.name = order_place wb1.save(r\'%s\\验收回执单-%s.xlsx\'%(dst,order_place)) wb1.close() wb.close() l = [40,41,42] src = \'E:\\\\Yzh\\\\3.16 中烟\\\\中烟订单操作\\\\湖北中烟发货表-2021年.xlsx\' dst = \'E:\\\\Yzh\\\\中烟\\\\5月 中烟\\\\5.13 中烟\\\\回执\' model = "E:\\\\Yzh\\\\中烟\\\\5月 中烟\\\\5.13 中烟\\\\回执\\\\验收回执单-南平 牙膏.xlsx" delivery_doc(l,src,dst,model)

 

这里提炼几个xlwings 的常用方法:

# 插入一行 第十三行
ws1.api.Rows(13).Insert()

# 删除整行
ws1.range(\'a12\').api.EntireRow.Delete()

# 复制sheet 页
ws1.api.Copy(After=ws1.api)

 

 

 

 

 

以上是关于代码自动生成Excel表格的主要内容,如果未能解决你的问题,请参考以下文章

可视化表格怎么做

怎么样让Excel在打开时就自动执行编好的宏代码?

java中把列表用流生成了Excel表格中的时间显示问题

在excel中,如何将名称直接生成代码

用于自动刷新 Excel 电子表格的 Python 脚本

如何将Excel中画的表格转化成HTML代码