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() # 关闭表格

浙公网安备 33010602011771号