```python
import xlwt
class PrintOrderTips(object):
def __init__(self,sheet_name,workbook_path_name,order_info):
self.workbook_path_name=workbook_path_name #获取存储路径
self.sheet_name=sheet_name #获取表名
self.workbook = xlwt.Workbook()#创建WORKBOOK对象
self.borders=xlwt.Borders()#创建边框对象
self.style=xlwt.XFStyle() #创建表格风格对象
self.style_jione=xlwt.XFStyle()
self.style_size_col=xlwt.XFStyle()
self.alignment = xlwt.Alignment()
# 0x01(左端对齐)、0x02(水平方向上居中对齐)、0x03(右端对齐)
self.alignment.horz = 0x02
# 0x00(上端对齐)、 0x01(垂直方向上居中对齐)、0x02(底端对齐)
self.alignment.vert = 0x01
self.worksheet = self.workbook.add_sheet(self.sheet_name)#创建名为self.sheet_name表单
self.order_info=order_info #传入订单信息
self.count=0 #设置初始计数器为0
self.old_count=0 #设置上一步计数器为0
self.speed=7 #定义每7行打印一次
# def set_sheet_style(self):
# #borders=xlwt.Borders()
self.borders.left=xlwt.Borders.THIN #设置左边框为Thin
self.borders.right=xlwt.Borders.THIN#设置右边框为Thin
self.borders.top=xlwt.Borders.THIN#设置上边框为Thin
self.borders.bottom=xlwt.Borders.THIN# 设置下边框为Thin
self.borders.left_colour=0x0 #设置左边框颜色为黑色
self.borders.right_colour=0x0#设置右边框颜色为黑色
self.borders.top_colour=0x0##设置上边框颜色为黑色
self.borders.bottom_colour=0x0 #设置下边框颜色为黑色
self.style.borders=self.borders #将设置好的边框风格赋给style.borders对象
self.style_jione.alignment=self.alignment#将设置好的对齐风格赋给style.borders对象
self.style_jione.borders=self.borders#将设置好的边框风格赋给style_jione.borders对象
self.style_size_col.alignment=self.alignment
self.style_size_col.borders=self.borders
def process_orderinfo(self):
for x in range(len(self.order_info)):#遍历订单找出所有的款号
style_garment=[key for key in self.order_info[x].keys()][0]
print("style:",style_garment)
for y in range(len(self.order_info[x][style_garment])):#遍历订单找出所有的尺码
size=[key for key in self.order_info[x][style_garment][y].keys()][0]
print("size:",size)
for key in self.order_info[x][style_garment][y][size].keys(): #遍历订单找出每款每色对应的数量
color_garment=key
print("color",color_garment)
quantity_size_color=int((self.order_info[x][style_garment][y][size][color_garment]*1.1)/3)
print("quantity",quantity_size_color)
self.count+=quantity_size_color
#new_count=count*speed
print("count",self.count)
self.construct_sheet(size,style_garment,color_garment)#将尺码,颜色,款号传给construct_sheet用于建造表格
def construct_sheet(self,size,style_garment,color_garment):
for l in range(self.old_count,self.count):#小纸条行数
for i in range(6):
self.worksheet.col(i).width = 256 * 15# 设置表格的宽度
if i==0 or i%2==0:
self.worksheet.write((0+l*self.speed), i, '',self.style)
self.worksheet.write((1+l*self.speed), i, 'CODE NO:',self.style)
self.worksheet.write((2+l*self.speed), i, 'COL.NO:',self.style)
self.worksheet.write((3+l*self.speed), i, 'SIZE:',self.style)
self.worksheet.write((4+l*self.speed), i, '',self.style)
self.worksheet.write_merge((5+l*self.speed),(5+l*self.speed), i,i+1, 'JIONE CO.,LTD',self.style_jione)#合并单元格
self.worksheet.write((6+l*self.speed), i, '',self.style)
#worksheet.write((5+l*speed), i, ' ',style)
self.worksheet.write((0+l*self.speed), i+1, '',self.style)
self.worksheet.write((1+l*self.speed), i+1, style_garment,self.style_size_col)
self.worksheet.write((2+l*self.speed), i+1, color_garment,self.style_size_col)
self.worksheet.write((3+l*self.speed), i+1, size,self.style_size_col)
self.worksheet.write((4+l*self.speed), i+1, '',self.style)
self.worksheet.write((6+l*self.speed), i+1, '',self.style)
self.old_count=self.count
def save_excel(self):
workbook.save( self.workbook_path_name)
def run(self):
self.process_orderinfo()
self.workbook.save( self.workbook_path_name)
if __name__=="__main__":
sheet_name="sheet01"
workbook_path_name="D:\EXCEL TEST\小纸条.xls"
order_info=[{"81502804":[{"38":{"#03":80,"#11":40,"#30":45,"#50":65,"#70":55,"#76":45}}]},
{"81502805":[{"38":{"#76":35,"#32":35,"#60":35}}]}]
# 订单录入的模式一定要按照如此列表嵌套字典嵌套列表的方式录入
#order_info=[{"款号":[{"尺码":{"色号":80,"#11":40,"#30":45,"#50":65,"#70":55,"#76":45}}]},
#{"款号":[{"尺码":{"色号":35,"#32":35,"#60":35}}]}]
make_sheet=PrintOrderTips(sheet_name,workbook_path_name,order_info)
make_sheet.run()
订单:
输出的表格:
以前要一天的工作,现在几秒就可以搞定。但是如何自动获取pdf订单上的具体数据,还需要再琢磨琢磨了