Python实现自动化办公(使用第三方库操作Excel)

1 使用 xlrd 读取Excel数据

1.1 获取具体单元格的数据

python 复制代码
import xlrd

# 1. 打开工作簿
workbook = xlrd.open_workbook("D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx")
# 2. 打开工作表
sheet1 = workbook.sheets()[0]  # 选择所有工作表中的第一个
# 下面方法也可以
# sheet1 = workbook.sheet_by_index(0)
# sheet1 = workbook.sheet_by_name("Sheet1")

# 3.通过行号和列号读取具体单元格中的数据
data = sheet1.cell_value(0, 0) # 获取第 0行,第 0列的数据
print(data)

1.2 批量获取数据

相关知识:

获取所有工作表的数目

python 复制代码
# 获取所有工作表的数目
sheet_nums: int = workbook.nsheets
print(sheet_nums)  # 返回一个整数

获取所有工作表的名称

python 复制代码
# 获取所有工作表的名称
sheet_names: list = workbook.sheet_names()
print(sheet_names)  # 返回一个列表

获取一张表中单元格的行数

python 复制代码
# 获取一张表单元格的行数
rows_num: int = sheet1.nrows
print(rows_num)

获取一张表中单元格的列数

python 复制代码
# 获取一张表单元格的列数
cols_num: int = sheet1.ncols
print(cols_num)

批量读取数据:【代码】

python 复制代码
# 批量读取数据
sheets = workbook.sheets()
for sheet in sheets:   # 遍历所有的工作表
    rows_num: int = sheet.nrows   # 获取一张表中的所有行
    cols_num: int = sheet.ncols   # 获取一张表中的所有列

    for row in range(rows_num):  # 遍历行
        for col in range(cols_num):  # 遍历一行中的所有列
            print(sheet.cell_value(row, col), end="\t\t\t\t")

        print()
    print("-------------------------")

2 使用xlwt 向Excel中写入数据

2.1 向Excel中具体的单元格中写入数据

python 复制代码
import xlwt

# 1.首先创建一个工作簿
people = xlwt.Workbook()

# 2.创建一个工作表
sheet = people.add_sheet('人员表')

# 3.写入数据
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '性别')
sheet.write(0, 2, '年龄')

# 保存文件
people.save('D:/Python_study_projects/Python自动化办公/Excel/people.xlsx')

2.2 向Excel中批量写入数据

python 复制代码
import xlwt

# 1.首先创建一个工作簿
people = xlwt.Workbook()

# 2.创建一个工作表
sheet = people.add_sheet('人员表')

# 3.写入数据
list_detail = [{"student_id": "1001", "name": "张三", "sex": "男"},
               {"student_id": "1002", "name": "李四", "sex": "女"},
               {"student_id": "1003", "name": "王五", "sex": "男"}]
row = 0
for rows in list_detail:
    for i, key in enumerate(rows):  # enumerate()遍历对象,返回下标和数据
        sheet.write(row, i, rows[key])
    row = row + 1

# 保存文件
people.save('D:/Python_study_projects/Python自动化办公/Excel/people.xlsx')

3 使用 xlutils 修改Excel工作簿

python 复制代码
# 需要导入两个包,因为必须打开文件,才能作修改
import xlrd
from xlutils.copy import copy

# 1.首先打开需要读的工作簿并获取到具体得到工作表
read_book = xlrd.open_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')
read_sheet = read_book.sheets()[0]

# 2.先拷贝一份作为修改
write_book = copy(read_book)
# 在拷贝的工作簿中获取工作表
write_sheet = write_book.get_sheet(0)

# 3.遍历所有行,并修改下标为3的列的内容
for row in range(read_sheet.nrows):  
    write_sheet.write(row, 3, "修改的内容")


write_book.save("D:/Python_study_projects/Python自动化办公/Excel/test1_修改后.xlsx")

4 使用 openpyxl 读取Excel内容

注意openpyxl 和前面的xlrd不一样,openpyxl读取的行列是从1开始的,这就对应了Excel表格中的行列的位置

python 复制代码
import openpyxl

# 读取操作
# 打开工作簿
workbook = openpyxl.load_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')

# 选择第一个工作表
sheet_1 = workbook['Sheet1']

4.1 读取具体单元格中的数据

python 复制代码
# 获取指定单元格数据
cell = sheet_1.cell(1, 1)  #  第一个参数是行,第二个参数是列
print(cell.value)

4.2 读取指定行的数据

python 复制代码
# 获取指定行的数据读 (取第三行数据)
cell_list = sheet_1[3]  # 参数 3表示第几行

for cell in cell_list:  # 遍历第三行,获得所有单元格
    print(cell.value)

4.3 读取所有行中的单元格的数据

python 复制代码
# 读取所有的行中的指定单元格
for row in sheet_1.rows:
    print(row[1].value)

4.4 读取所有行中的所有单元格

读取所有行中的所有单元格,并读取一行放入列表中输出

python 复制代码
# 读取所有的行中的所有单元格
for row in sheet_1.rows:
    row_text_list = []

    for cell in row:
        row_text_list.append(cell.value)
    print(row_text_list)

4.5 读取某些行

python 复制代码
# 输出最大行数和列数、最小行数和列数   注意这边下标是从 1 开始的
print(f"最大行数: {sheet.max_row}")
print(f"最小行数: {sheet.min_row}")
print(f"最大列数: {sheet.max_column}")
print(f"最小列数: {sheet.min_column}")

python 复制代码
# 读取某些行
# for col in sheet_1.iter_cols(min_col=2, max_col=4, min_row=1, max_row=3, values_only=True):
for row in sheet_1.iter_rows(min_row=2):
    # 里面参数指定读取的范围
    for cell in row:
        print(cell.value)


for row in sheet_1.iter_rows(min_row=2, max_row=4, min_col=1, max_col=3):
    # 里面参数指定读取的范围
    for cell in row:
        print(cell.value)

5 使用 openpyxl 向Excel中写入数据

5.1 向已有的Excel文件中写入数据

python 复制代码
from openpyxl import workbook, load_workbook
# 读取操作
"""
    1.打开已有的文件
"""
# 打开工作簿
wb = load_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')
# 选择第一个工作表
sheet = wb.worksheets[0]
# 获取到具体的单元格
cell = sheet.cell(1,2)
cell.value = "姓名hello"
wb.save('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')

5.2 向没有的Excel文件中写入数据

文件不存在,首先需要创建

python 复制代码
from openpyxl import workbook, load_workbook
"""
    2.如果文件不存在,则直接创建
"""
wb1 = workbook.Workbook()  # 创建工作簿
sheet1 = wb1.worksheets[0]

# 找到单元格
cell = sheet1.cell(1,2)
# 写入内容
cell.value = "hello"

5.3 向Excel文件中批量写入数据

python 复制代码
wb1 = workbook.Workbook()  # 创建工作簿
sheet1 = wb1.worksheets[0]


list_detail = [{"student_id": "1001", "name": "张三", "sex": "男"},
               {"student_id": "1002", "name": "李四", "sex": "女"},
               {"student_id": "1003", "name": "王五", "sex": "男"}]
row = 1
for rows in list_detail:
    for i, key in enumerate(rows):
        cell = sheet1.cell(row, i+1)
        cell.value = rows[key]
    row += 1

相关推荐
淡忘_cx2 小时前
使用Jenkins自动化部署spring-java项目+宝塔重启项目命令(2.528.2版本)
java·自动化·jenkins
喵手2 小时前
Python爬虫实战:采集菜谱网站的“分类/列表页”(例如“家常菜”或“烘焙”频道)数据,构建高可用的美食菜谱数据采集流水线(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集菜谱网站数据·家常菜或烘焙频道·构建高可用食谱数据采集系统
喵手2 小时前
Python爬虫实战:硬核解析 Google Chrome 官方更新日志(正则+文本清洗篇)(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控谷歌版本发布历史·获取稳定版更新日志
小邓睡不饱耶2 小时前
实战|W餐饮平台智能化菜品推荐方案(含Spark实操+算法选型+完整流程)
python·ai·ai编程·ai写作
草莓熊Lotso2 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
aiguangyuan2 小时前
基于BiLSTM-CRF的命名实体识别模型:原理剖析与实现详解
人工智能·python·nlp
种时光的人2 小时前
CANN生态自动调优:cann-auto-tune 让AIGC大模型性能优化自动化、极致化
性能优化·自动化·aigc
禹凕2 小时前
Python编程——进阶知识(MYSQL引导入门)
开发语言·python·mysql
阿钱真强道2 小时前
13 JetLinks MQTT:网关设备与网关子设备 - 温控设备场景
python·网络协议·harmonyos
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest