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

相关推荐
凤枭香7 分钟前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
测试杂货铺14 分钟前
外包干了2年,快要废了。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
艾派森19 分钟前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘
小码的头发丝、44 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
Chef_Chen2 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空2 小时前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩2 小时前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903132 小时前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁2 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev3 小时前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理