python输出csv 格式和pptx格式数据

安装

pip install pandas  #安装pandas,scv使用
sudo pip3 install python-pptx -i https://pypi.tuna.tsinghua.edu.cn/simple/

保存为csv格式:

# coding:utf-8
import json
import os,re
import sys
import csv
import pandas as pd

class ReportTable(object):
    def __init__(self):
        self.mColumn=['包名','CPU核','CPU占用率(%)','运行时间(s)','最小频率(G)','最大频率(G)','平均频率(G)'] #列表头名称
        self.mTableData=[]

    @classmethod
    def newRowData(self,package,core,utilization,runtime_ns,min_freq_khz,max_freq_khz,avg_freq_khz):
        return {
            'package_name':package,
            'core_name':core,
            'utilization':utilization,
            'runtime_ns':runtime_ns,
            'min_freq_khz':min_freq_khz,
            'max_freq_khz':max_freq_khz,
            'avg_freq_khz':avg_freq_khz
        }
    def addRow(self,row):
        self.mTableData.append([row['package_name'],row['core_name'],row['utilization'],row['runtime_ns'],
            row['min_freq_khz'],row['max_freq_khz'],row['avg_freq_khz']
        ])

    def outputCsv(self,save_to_csv):
        report=pd.DataFrame(columns=self.mColumn,data=self.mTableData)
        report.to_csv(save_to_csv,index=False,encoding='utf_8_sig')
    
reportTable=ReportTable()
row=[package,TraceMetrics.getReportCoreName(core),
                    # keepTwoDecimals(float(total_runtime_ns)/(trace_duration_ns*8.0)*100.0),
                    keepTwoDecimals(float(value['runtime_ns'])/(trace_duration_ns*TraceMetrics.getFreqMult(core_distribution,core))*100.0),
                    keepTwoDecimals(value['runtime_ns']/1.e9),value['min_freq_khz'],value['max_freq_khz'],value['avg_freq_khz']
                ]
reportTable.addRow(ReportTable.newRowData(row))
#保存scv
reportTable.outputCsv(outputName+'_report.csv')

保存为pptx格式

import collections.abc
from pptx import Presentation
from pptx.util import Cm,Pt,Inches
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.text import PP_ALIGN
from pptx.enum.text import MSO_ANCHOR
from pptx.enum.chart import XL_CHART_TYPE
from pptx.enum.chart import XL_LEGEND_POSITION
from pptx.dml.color import RGBColor

# 创建幻灯片 ------
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '报告'
shapes.title.text_frame.paragraphs[0].font.size = Pt(30)

# 定义图表数据 ---------------------
chart_data = ChartData()
chart_data.categories = ['East', 'West', 'Midwest']
chart_data.add_series('Series 1', (19.2, 21.4, 16.7))

# 将图表添加到幻灯片 --------------------
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)



slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '报告'
shapes.title.text_frame.paragraphs[0].font.size = Pt(30)

header =['fd','fdg','fdse','gfv']
row=[['1','2','4','5'],
['2','2','4','5'],
['3','2','4','5'],
['4','2','4','5'],
['5','2','4','5'],
['6','2','4','5'],
['7','2','4','5'],
['8','2','4','5'],
    ['9','66','3','1']
    ]

# 添加表格:rows行数,cols列数,left和top是在PPT中的位置,width是表的列宽,height是表的行高
table = slide.shapes.add_table(rows = len(row)+1,
                             cols = len(header),
                             left = Cm(3.5),
                             top = Cm(5.5),
                             width = Cm(20),
                             height =  Cm(6)
                        ).table

# 写入表头,设置表头的格式
for i, h in enumerate(header):
    cell = table.cell(0, i)
    cell.text = h
    cell.text_frame.paragraphs[0].font.size = Pt(16)
    cell.text_frame.paragraphs[0].font.color.rgb = RGBColor(255, 255, 255)
    cell.text_frame.paragraphs[0].font.name = '微软雅黑'
    cell.text_frame.paragraphs[0].font.bold = True
    cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
    cell.vertical_anchor = MSO_ANCHOR.MIDDLE
    cell.fill.solid()
    cell.fill.fore_color.rgb = RGBColor(49, 134, 155)

# # 按行写入数据,并且设置格式
row_num=0
for i, row_d in enumerate(row):
    for j,col_d in enumerate(row_d):
        cell = table.cell(i+1, j)
        if j==0 and i+2<len(row) and i%3==0:
            cell.merge(table.cell(i+1+2, 0))
        cell.text = str(col_d)
        cell.text_frame.paragraphs[0].font.size = Pt(9)
        cell.text_frame.paragraphs[0].font.name = '微软雅黑'
        cell.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER
        cell.vertical_anchor = MSO_ANCHOR.MIDDLE
        cell.fill.solid()
        cell.fill.fore_color.rgb = RGBColor(240, 240, 240)

prs.save('chart-01.pptx')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值