python办公自动化应用实例_python实用办公自动化

python之办公自动化

生成execl表

import pandas as pd

# DataFrame 数据帧 相当于 工作簿中的一个工作表

df = pd.DataFrame({

'Id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],

'Name': ['student_1', 'student_2', 'student_3', 'student_4', 'student_5', 'student_6', 'student_7', 'student_8',

'student_9', 'student_10', 'student_11', 'student_12', 'student_13', 'student_14', 'student_15'],

'Score': [21, 26, 47, 55, 66, 45, 46, 78, 89, 98, 87, 77, 44, 45, 78]

})

# 自定义索引

df = df.set_index('Id')

print(df)

df.to_excel(r'F:\pythonProject2\static\people.xlsx')

print('done!')

1850502-20201019154744631-1393892284.png

读取execl表

path = 'F:/pythonProject2/static/people.xlsx'

people = pd.read_excel(path, sheet_name='Sheet1', )

print(people)

print('***********************************')

# 跳过前1行

people = pd.read_excel(path, sheet_name='Sheet1', header=1)

print(people)

print('***********************************')

# 指定id为索引,去除默认的索引

people = pd.read_excel(path, sheet_name='Sheet1', index_col='Id', )

print(people.head(2))

print('***********************************')

1850502-20201019154755324-921876099.png

matplotlib绘图

import pandas as pd

import matplotlib.pylab as plt

Students = pd.read_excel(r'F:\pythonProject2\static\people.xlsx')

Students.sort_values(by='Score', inplace=True, ascending=False)

plt.bar(Students['Name'], Students.Score, color='orange')

# 添加中文支持

from matplotlib.font_manager import FontProperties

# 引入字体

font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=16)

plt.title('学生分数', fontproperties=font)

plt.xlabel('名字', fontproperties=font, fontsize=14)

plt.ylabel('分数', fontproperties=font, fontsize=14)

plt.xticks(Students.Name, rotation='90')

plt.tight_layout()

plt.show()

13840634.html

绘制叠加柱状图

import pandas as pd

import matplotlib.pylab as plt

users = pd.read_excel(r'F:\pythonProject2\static\data.xlsx')

# 新计算出一个总量,用于排序‘

users['Total'] = users['Jan'] + users['Feb'] + users['Mar']

# 排序

users.sort_values(by='Total', inplace=True)

# 水平的叠加柱状图, barh 中的 h表示 horizontal 水平的

# 锤子的叠加主张图, bar

# 利用 stacked 就可以实现叠加形式

users.plot.bar(x='Name', y=['Jan', 'Feb', 'Mar'], stacked=True)

plt.tight_layout()

plt.show()

1850502-20201019154826590-1500223627.png

python操作word

from docx import Document

from docx.shared import Inches # 定义插入图像的英寸

document = Document()

# 新增段落

p2 = document.add_paragraph('这是个段落')

# 在p2段落前插入一个段落

p1 = p2.insert_paragraph_before('第一个段落')

# 新增标题,level有1-9种规格

# level=0,新增的标题会有带下划线样式

document.add_heading('这是标题', level=1)

# 新增分页符 -- 后面添加的内容会在新的一页中

document.add_page_break()

# 新增表格 -- 因为前面有分页符,所有这里的内容在新的一页中

table = document.add_table(rows=6, cols=6)

# 第一行第三列

cell = table.cell(0, 2)

cell.text = '第一行第三列'

row = table.rows[1]

row.cells[0].text = '第二行第一列'

row.cells[1].text = '第二行第二列'

document.add_picture('default.png', width=Inches(1.25))

document.save('new.docx')

生成工作报告简单案例

# -*- coding:utf-8 -*-

# @File :practice.py

# @Author:yx yao

# @Date :2020/10/19 15:19

# @Desc :

import pandas as pd

import matplotlib.pyplot as plt

from docx import Document

imgname = 'data.jpg'

students = pd.read_excel('F:\pythonProject2\static\people.xlsx')

students.sort_values(by='Score', inplace=True, ascending=False)

# 绘制柱状图

plt.bar(students.Name, students.Score, color='orange')

plt.title('Student Score', fontsize=10)

plt.xlabel('Name')

plt.ylabel('Score')

# 旋转x轴标签

plt.xticks(students.Name, rotation='90')

# 紧凑显示

plt.tight_layout()

# 保存图片

plt.savefig(imgname)

document = Document()

document.add_heading('数据分析报告', level=0)

# 调整排序后的索引

first_student = students.iloc[0,:]['Name']

first_score = students.iloc[0,:]['Score']

p = document.add_paragraph(f'总共有{len(students.Name)}名学生参加了考试,学生考试的总体情况!')

table = document.add_table(rows=len(students.Name)+1, cols=2)

# 设置表格样式

table.style = 'LightShading-Accent1'

table.cell(0, 0).text = '学生姓名'

table.cell(0, 1).text = '学生分数'

for i, (index, row) in enumerate(students.iterrows()):

table.cell(i+1, 0).text = str(row['Name'])

table.cell(i+1, 1).text = str(row['Score'])

document.add_picture(imgname)

document.save('Student.docx')

print('Done!')

1850502-20201019154848794-426238723.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值