python读取Excel日志写入报告Excel

抓取日志内容

保证已有一个文件可供我们进行读取(防止误操作覆盖,做好备份)

  

 

 

创建一个新的excel

import xlsxwriter,os
uuid = 'UYQ9K21A19900093'  # 设备名称用于识别对应文件名
path = 'D:\code\SuperNight_v2.2.1\Execl_2021-11-25_18_16_46'     # 文件所在路径
out = path + os.sep + 'Memory_测试_{}.xlsx'.format(uuid)      # 输出文件路径及文件名
workbook = xlsxwriter.Workbook(out)      # 创建一个表格
workbook.close()     # 关闭该表格

  我们成功生成了一个Memory_测试_UYQ9K21A19900093.xlsx文件

创建sheet表

workbook = xlsxwriter.Workbook(out) # 创建表格 注意如果已存在会覆盖原表
sheet1 = workbook.add_worksheet(name="memory")  # 表1名称
sheet2 = workbook.add_worksheet(name="mem") # 表2名称

添加首行内容

  

headings = [u'次数', u'Native(MB)', u'Graphics(MB)', u'Code(MB)', u'TOTAL(MB)']  # 表头名称
for sheet in (sheet1, sheet2):  # 分别加入各个表头
     sheet.write_row('A1', headings)

 

读取表格

file = path + os.sep + 'meminfo_{}.xls'.format(uuid) # 文件位置
book = xlrd.open_workbook(file) # 读取模式打开xls表格
sheet = book.sheet_by_index(0)  # 通过索引顺序获取一个工作表
rowno = sheet.nrows # 读取表格的行数
print(sheet.cell(1, 4).value)   # 打印第二行,第五列数据

  

分析表格数据

total_list = [] # 用于装total列的数据
for k in range(1, rowno): # 读取换算单位到空列表total_list列表中
total = round(int(sheet.cell(k, 4).value) / 1024, 2) # 换算kb成mb
total_list.append(total)
avg_total = np.mean(total_list) # total列表平均值
for j in range(1, rowno): # 读取大于平均值70%的的total到available_list
total = round(int(sheet.cell(j, 4).value) / 1024, 2)
if total > int(RATIO * avg_total):
available_list.append(j)
rowno1 = len(available_list) #
no = 1
for i in available_list: # 循环列表写入表格
sheet1.write(no, 0, no) # 次数
natives = round(int(sheet.cell(i, 1).value) / 1024, 2)
all_natives_list.append(natives)
sheet1.write(no, 1, natives)
graphics = round(int(sheet.cell(i, 2).value) / 1024, 2)
all_graphics_list.append(graphics)
sheet1.write(no, 2, graphics)
code = round(int(sheet.cell(i, 3).value) / 1024, 2)
sheet1.write(no, 3, code)
all_code_list.append(code)
total = round(int(sheet.cell(i, 4).value) / 1024, 2)
sheet1.write(no, 4, total)
all_total_list.append(total)
no += 1

  

设置图像的样式

    chart_col = workbook.add_chart({'type': 'line'})  # 新建图表格式 line为折线图
    chart_col.add_series(  # 给图表设置格式,填充内容
        {
            'name': '=memory!$B$1',
            'categories': '=memory!$A$2:$A$' + str(rowno1) + '',
            'values': '=memory!$B$2:$B$' + str(rowno1) + '',
            'line': {'color': 'red'},
        }
    )

    chart_col.add_series(  # 给图表设置格式,填充内容
        {
            'name': '=memory!$C$1',
            'categories': '=memory!$A$2:$A$' + str(rowno1) + '',
            'values': '=memory!$C$2:$C$' + str(rowno1) + '',
            'line': {'color': 'blue'},
        }
    )

    chart_col.add_series(  # 给图表设置格式,填充内容
        {
            'name': '=memory!$D$1',
            'categories': '=memory!$A$2:$A$' + str(rowno1) + '',
            'values': '=memory!$D$2:$D$' + str(rowno1) + '',
            'line': {'color': 'yellow'},
        }
    )

    chart_col.add_series(  # 给图表设置格式,填充内容
        {
            'name': '=memory!$E$1',
            'categories': '=memory!$A$2:$A$' + str(rowno1) + '',
            'values': '=memory!$E$2:$E$' + str(rowno1) + '',
            'line': {'color': 'green'},
        }
    )

  

 生成图形表

 

    chart_col.set_title({'name': '内存使用状况'})
    chart_col.set_x_axis({'name': "次数"})
    chart_col.set_y_axis({'name': '内存值'})  # 设置图表表头及坐标轴
    chart_col.height = 600
    chart_col.width = 960
    chart_col.set_style(1)
    sheet1.insert_chart('H10', chart_col, {'x_offset': 25, 'y_offset': 10})  # 放置图表位置
    workbook.close()    # 关闭表格

  

posted @ 2021-11-26 16:37  哇!彦祖  阅读(278)  评论(0)    收藏  举报