python办公自动化(Excel)的实例教程
作者:想成为工程师的菜鸟 时间:2022-02-27 07:37:16
一、读取Excel中的数据
安装
xlrd 只能读取Excel内容
pip install xlrd==1.2.0
xlrd库的open_workbook函数打开Excel文件,并且返回一个Book对象,这个对象代表打开的Excel文件。
通过Book对象得到Excel文件的很多信息,比如 表单数量 和 表单名称
import xlrd
book - xlrd.open_workbook('income.xlsx')
print(f"表单数量 {book.nsheets}")
print(f"表单名称 {book.sheet_names()}")
要读取某个表单里单元格中的数据,必须要先获取表单(sheet)对象
# 表单索引从0开始,获取第一个表单对象
book.sheet_by_index( 0 )
# 获取名为2022的表单对象
book.sheet_by_name('2022')
# 获取所有的表单对象,放入一个列表返回
book.sheet()
获取了表单对象后,可根据起其属性得到:
表单行数 nrows
列数 ncols
表单名 name
表单索引 number
# 获取了表单对象后,可以使用cell_value方法,读取指定单元格中的文本内容
sheet.cell_value(rowx=0,colx=0)
# 读取指定行所有单元格的内容使用row_values方法,参数为行号,存放在一个列表中返回
sheet.row_value(rowx=0)
# 读取指定列所有单元格的内容使用col_values方法,参数为行号,存放在一个列表中返回
sheet.col_value(colx=0)
二、新建Excel,写入数据
创建一个新的Excel并写入数据,需要使用openpyxl库
openpyxl 库可读、写、改,但不支持老版本 Office2003的xls格式
import openpyxl
# 创建一个Excel workbook 对象
book = openpyxl.Workbook()
# 创建时,会自动产生一个sheet,通过active获取
sh = book.active
# 修改当前 sheet 标题为 工资表
sh.title = '工资表'
# 保存文件
book.save('信息.xlsx')
# 增加一个名为 '年龄表' 的sheet,放在最后
sh1 = book.create_sheet('年龄表-最后')
# 增加一个 sheet,放在最前
sh2 = book.create_sheet('年龄表-最前',0)
# 增加一个 sheet,指定为第2个表单
sh3 = book.create_sheet('年龄表2',1)
# 根据名称获取某个sheet对象
sh = book['工资表']
# 给第一个单元格写入内容
sh['A1'] = '你好'
# 获取某个单元格内容
print(sh['A1'].value)
# 根据行号列号, 给第一个单元格写入内容,
# 注意和 xlrd 不同,是从 1 开始
sh.cell(2,2).value = '白月黑羽'
# 根据行号列号, 获取某个单元格内容
print(sh.cell(1, 1).value)
book.save('信息.xlsx')
插入行、列
sheet 对象的 insert_rows 和 insert_cols 方法,分别用来插入行和列
删除行、列
sheet 对象的 delete_rows 和 delete_cols 方法,分别用来删除行和列
文字颜色、字体、大小
单元格里面的样式风格(包括颜色、字体、大小、下划线等)都是通过Font对象设定的
import openpyxl
# 导入Font对象 和 colors 颜色常量
from openpyxl.styles import Font,colors
wb = openpyxl.load_workbook('income.xlsx')
sheet = wb['2018']
# 指定单元格字体颜色,
sheet['A1'].font = Font(color=colors.RED, #使用预置的颜色常量
size=15, # 设定文字大小
bold=True, # 设定为粗体
italic=True # 设定为斜体
)
# 也可以使用RGB数字表示的颜色
sheet['B1'].font = Font(color="981818")
# 指定整行 字体风格, 这里指定的是第3行
font = Font(color="981818")
for y in range(1, 100): # 第 1 到 100 列
sheet.cell(row=3, column=y).font = font
# 指定整列 字体风格, 这里指定的是第2列
font = Font(bold=True)
for x in range(1, 100): # 第 1 到 100 行
sheet.cell(row=x, column=2).font = font
# 指定 某个单元格背景色
sheet['A1'].fill = PatternFill("solid", "E39191")
# 指定 整行 背景色, 这里指定的是第2行
fill = PatternFill("solid", "E39191")
for y in range(1, 100): # 第 1 到 100 列
sheet.cell(row=2, column=y).fill = fill
# 在第1行,第4列 的位置插入图片
sheet.add_image(Image('1.png'), 'D1')
wb.save('income-1.xlsx')
补充:Excel文件批量合并
工具包
# 导入工具包
import pandas as pd
import os
获取文件列表
# 设置文件路径
path = 'C:/Users/yyz/Desktop/python办公技巧/data/数据合并/'
# 空列表, 用于存放文件路径
files = []
for file in os.listdir(path):
if file.endswith(".xlsx"):
files.append(path+file)
# 查看列表
files
转换存储数据
# 定义一个空的dataframe
data = pd.DataFrame()
# 遍历所有文件
for file in files:
datai = pd.read_excel(file)
datai_len = len(datai)
data = data.append(datai) # 添加到总的数据中
print('读取%i行数据,合并后文件%i列, 名称:%s'%(datai_len,len(data.columns),file.split('/')[-1]))
# 查看是否全部读取,格式是否出错
# 重置索引
data.reset_index(drop=True,inplace=True)
来源:https://blog.csdn.net/qq_46177396/article/details/127785769
标签:python,办公自动化,excel
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Css 清除浮动
2008-09-15 18:47:00
基于Django框架的权限组件rbac实例讲解
2022-09-27 17:11:51
![](https://img.aspxhome.com/file/2023/2/72032_0s.jpg)
Python通过tkinter实现百度搜索的示例代码
2022-06-28 01:28:46
Python 实现局域网远程屏幕截图案例
2021-05-13 13:43:43
![](https://img.aspxhome.com/file/2023/8/66788_0s.jpg)
妙用Dreamweaver MX共享Word XP文件
2010-09-05 21:17:00
![](https://img.aspxhome.com/file/UploadPic/20072/200723113242108s.jpg)
Python使用lxml模块和Requests模块抓取HTML页面的教程
2021-08-29 20:55:33
mysql5存储过程编写实践
2008-12-24 16:32:00
javascript模拟php函数in_array
2023-10-15 22:12:49
PHP循环与分支知识点梳理
2023-05-29 13:09:21
Pandas分组聚合之groupby()、agg()方法的使用教程
2021-07-07 00:29:55
![](https://img.aspxhome.com/file/2023/4/87744_0s.png)
人工智能学习Pytorch张量数据类型示例详解
2021-09-13 01:33:08
![](https://img.aspxhome.com/file/2023/5/72795_0s.png)
js实现(层,表格)元素圆角的函数
2008-01-01 16:40:00
![](https://img.aspxhome.com/file/UploadPic/20081/1/200811164924859s.gif)
Django实现内容缓存实例方法
2021-04-19 20:47:41
PHP加密函数 Javascript/Js 解密函数
2023-06-15 18:03:03
关于python的第三方库下载与更改方式
2021-02-28 10:32:55
对SQL Server数据库进行优化的经验总结
2010-07-26 14:52:00
python检查字符串是否是正确ISBN的方法
2022-05-10 14:54:01
浅谈Python几种常见的归一化方法
2021-01-22 16:36:45
![](https://img.aspxhome.com/file/2023/4/66824_0s.gif)
使用PyCharm创建Django项目及基本配置详解
2021-03-31 10:51:36
![](https://img.aspxhome.com/file/2023/3/76853_0s.png)
Python json模块与jsonpath模块区别详解
2023-09-17 18:07:26