xlwt自动写入excel表


```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订单上的具体数据,还需要再琢磨琢磨了



发布了55 篇原创文章 · 获赞 0 · 访问量 2068

猜你喜欢

转载自blog.csdn.net/KathyLJQ/article/details/103556605