zoukankan      html  css  js  c++  java
  • 使用py,根据日志记录自动生成周报

    日志格式如下,思路是如果检测到文件中的内容为5位或者8位,即12.11或18.12.11,同时存在.即认为当前行为日期数据
    仅作为方便查看日志使用,生成脚本时过滤此行。每次读取到空白行的时候则认为下一条记录为新一天的记录,
    另外如果读取到====则认为本周的所有记录已经结束,可生成并退出脚本


    12.21
    剩余寿命列表

    12.20
    监控换刀记录表

    ===============================================
    ===============================================
    脚本
    
    # -*- coding: utf-8 -*-
    """
    12.22 2:12AM
    """
    #import time
    import datetime
    import xlwt
    
    now=datetime.datetime.now()
    workbook=xlwt.Workbook(encoding='utf-8')
    worksheet = workbook.add_sheet('Sheet1')
    count=1#序号
    newDay=1#是否为另一天的记录
    f=open(r"C:UsersDellDesktopa.txt")
    i=4#行号
    hour=6#工时
    context=0
    ids=1
    thing=2#工作事项
    project=3#所属项目
    skill=4#技术点分解描述
    other=5#需要协调内容(多人接口联调、现场测试、客户试用等等)
    planStart=7#计划开始时间
    planEnd=8#计划结束时间
    start=9#时间开始时间
    end=10#时间完成时间
    statu=11#完成状态
    backup=12#总结备案
    
    #样式
    borders = xlwt.Borders()  # Create borders
     
    borders.left = xlwt.Borders.THIN  # 添加边框-虚线边框
    borders.right = xlwt.Borders.THIN  # 添加边框-虚线边框
    borders.top = xlwt.Borders.THIN  # 添加边框-虚线边框
    borders.bottom = xlwt.Borders.THIN  # 添加边框-虚线边框
    borders.left_colour = 0x08 # 边框上色
    borders.right_colour = 0x08
    borders.top_colour = 0x08
    borders.bottom_colour = 0x08
    
    #列宽
    worksheet.col(context).width=256*10
    worksheet.col(ids).width=256*8
    worksheet.col(thing).width=256*30
    worksheet.col(project).width=256*10
    worksheet.col(skill).width=256*20
    worksheet.col(other).width=256*25
    worksheet.col(hour).width=256*10
    worksheet.col(planStart).width=256*25
    worksheet.col(planEnd).width=256*25
    worksheet.col(start).width=256*25
    worksheet.col(end).width=256*25
    worksheet.col(statu).width=256*12
    worksheet.col(backup).width=256*22
    #创建一个样式----------------------------
    stylefirstRow = xlwt.XFStyle() 
    stylefirstRow.borders = borders
    pattern = xlwt.Pattern() 
    pattern.pattern =xlwt. Pattern.SOLID_PATTERN 
    pattern.pattern_fore_colour = xlwt.Style.colour_map['gold'] 
    #设置单元格背景色为黄色
    stylefirstRow.pattern = pattern
    al = xlwt.Alignment()
    al.horz = 0x02      # 设置水平居中
    al.vert = 0x01      # 设置垂直居中
    al.wrap=1    #自动换行
    stylefirstRow.alignment = al
    font = xlwt.Font() # 为样式创建字体
    #font.name = 'Times New Roman' 
    font.name = u'微软雅黑' 
    #font.bold = True # 黑体
    #font.underline = True # 下划线
    #font.italic = True # 斜体字
    font.height=0x00C8*1.6 # C8 in Hex (in decimal) = 10 points in height.
    #font.colour_index=48#蓝色
    #font.colour_index=2#红色
    #font.colour_index=59#灰色
    #font.colour_index=44#浅蓝色
    stylefirstRow.font = font # 设定样式
    #第二行样式----------------------------
    stylesecondRow = xlwt.XFStyle() 
    stylesecondRow.borders = borders
    font2 = xlwt.Font() # 为样式创建字体
    font2.name = u'微软雅黑' 
    font2.height=0x00C8*1.4 # C8 in Hex (in decimal) = 10 points in height.
    stylesecondRow.font = font2 # 设定样式
    stylesecondRow.alignment = al
    #第3行样式----------------------------
    style3Row = xlwt.XFStyle() 
    style3Row.borders = borders
    font3 = xlwt.Font() # 为样式创建字体
    font3.name = u'微软雅黑' 
    font3.height=0x00C8 # C8 in Hex (in decimal) = 10 points in height.
    font3.colour_index=48#蓝色
    style3Row.font = font3 # 设定样式
    #style3Row.alignment = al
    #统一字体
    fontx = xlwt.Font() # 为样式创建字体
    fontx.name = u'微软雅黑' 
    fontx.height=0x00C8*1.2 # C8 in Hex (in decimal) = 10 points in height.
    #灰色背景
    styleGrayRow = xlwt.XFStyle() 
    styleGrayRow.borders = borders
    styleGrayRow.font=fontx
    patternGray = xlwt.Pattern() 
    patternGray.pattern =xlwt. Pattern.SOLID_PATTERN 
    patternGray.pattern_fore_colour = xlwt.Style.colour_map['gray25'] 
    styleGrayRow.pattern=patternGray
    styleGrayRow.alignment = al
    
    #浅绿背景
    styleLightGreenRow = xlwt.XFStyle() 
    styleLightGreenRow.borders = borders
    styleLightGreenRow.font=fontx  
    patternLightGreen = xlwt.Pattern() 
    patternLightGreen.pattern =xlwt. Pattern.SOLID_PATTERN 
    patternLightGreen.pattern_fore_colour = xlwt.Style.colour_map['light_green'] 
    styleLightGreenRow.pattern=patternLightGreen
    styleLightGreenRow.alignment=al
    styleLightGreenRow.alignment = al
    #绿色背景
    styleGreenRow = xlwt.XFStyle() 
    styleGreenRow.borders = borders
    styleGreenRow.font=fontx
    patternGreen = xlwt.Pattern() 
    patternGreen.pattern =xlwt. Pattern.SOLID_PATTERN 
    patternGreen.pattern_fore_colour = xlwt.Style.colour_map['green'] 
    styleGreenRow.pattern=patternGreen
    #设置单元格背景色
    styleGreenRow.pattern = patternGreen
    styleGreenRow.alignment = al
    
    #红色字
    redstyle = xlwt.XFStyle() 
    redstyle.borders = borders
    fontred= xlwt.Font() # 为样式创建字体
    fontred.name = u'微软雅黑' 
    fontred.height=0x00C8*1.2 # C8 in Hex (in decimal) = 10 points in height.
    fontred.colour_index=2#红色
    redstyle.font=fontred
    redstyle.pattern=patternGray
    redstyle.alignment = al
    #通用style
    styleCommon = xlwt.XFStyle() 
    styleCommon.borders = borders
    styleCommon.font=fontx
    styleCommon.alignment = al
    #模板内容
    worksheet.write_merge(0, 0,0,12, label = "产品开发部工作周报",style=stylefirstRow)
    worksheet.write_merge(1, 1,5,7, label = "张三",style=stylesecondRow)
    worksheet.write_merge(2, 2,0,12, label = "注:每周五时做本周工作总结(关表),同时做下周工作计划(开表),必要时下周一调整;",style=style3Row)
    worksheet.write(3, context, label = "内容",style=styleGrayRow)
    worksheet.write(3, ids, label = "序号",style=styleGrayRow)
    worksheet.write(3, thing, label = "工作事项",style=styleGrayRow)
    worksheet.write(3, project, label = "所属项目",style=styleGrayRow)
    worksheet.write(3, skill, label = "技术点分解描述",style=styleGrayRow)
    worksheet.write(3, other, label = "需要协调内容(多人接口联调、现场测试、客户试用等等)",style=redstyle)
    worksheet.write(3, hour, label = "工作估时",style=styleGrayRow)
    worksheet.write(3, planStart, label = "计划开始时间",style=styleGrayRow)
    worksheet.write(3, planEnd, label = "计划结束时间",style=styleGrayRow)
    worksheet.write(3, start, label = "实际开始时间",style=styleGreenRow)
    worksheet.write(3, end, label = "实际开始时间",style=styleGreenRow)
    worksheet.write(3, statu, label = "完成状态",style=styleGreenRow)
    worksheet.write(3, backup, label = "总结备案",style=styleGreenRow   )          
    for line in f:
        line=line.replace('
    ','')
        #如果上一次获取到的行为空格,则认为当前行为日期,直接跳过
        if newDay==1:
            newDay=0
        #搜索到##则认为一周结束
        if line.find("====")!=-1:
            break
        else:
            #print strTime
            #如果获取的内容为空格则开始新一天的数据
            if line=="":
                #更新当前的日期
                newDay=1
                now=now+datetime.timedelta(days=-1)
            else:
                newDay=0#置为非新一天的数据
               # print len(line)#==8 or line.count==5)
                if (len(line)==8 or len(line)==5) and line.find(".")!=-1:
                    continue#print line.find(".")
                else:
                    worksheet.write(i, ids, label = count,style=styleCommon)
                    worksheet.write(i, thing, label = line,style=styleCommon)
                    worksheet.write(i, project, label = "",style=styleCommon)
                    worksheet.write(i, skill, label = "",style=styleCommon)
                    worksheet.write(i, other, label = "",style=styleCommon)
                    worksheet.write(i, hour, label = "9",style=styleCommon)
                    worksheet.write(i, planStart, label = now.strftime("%Y-%m-%d"),style=styleCommon)
                    worksheet.write(i, planEnd, label = now.strftime("%Y-%m-%d"),style=styleCommon)
                    worksheet.write(i, start, label = now.strftime("%Y-%m-%d"),style=styleCommon)
                    worksheet.write(i, end, label = now.strftime("%Y-%m-%d"),style=styleCommon)
                    worksheet.write(i, statu, label = "完成",style=styleCommon)
                    worksheet.write(i, backup, label = "",style=styleCommon)
                    print now.strftime("%Y-%m-%d") +"***"+line.decode('utf-8').encode('cp936')
                    i=i+1
                    count=count+1
        #print strTime
    worksheet.write_merge(4, count+4-2,0,0, label = "本周工作总结",style=styleLightGreenRow)
    f.close()
    workbook.save(r"C:UsersDellDesktop\"+"产品开发周报_张三_".decode('utf-8').encode('cp936')+datetime.datetime.now().strftime("%Y_%m_%d")+".xlsx")

     代码:github

  • 相关阅读:
    BZOJ 2005 能量采集
    HDU 2841 Visible Trees(莫比乌斯反演)
    hihocoder 1543
    hihocoder 1311
    hdu 6069
    hdu 6058
    hdu 6034
    拓展欧几里得
    poj 3321
    树状数组总结
  • 原文地址:https://www.cnblogs.com/ives/p/10159721.html
Copyright © 2011-2022 走看看