python基础-13-处理excel电子表格

文章目录

【README】

本文总结自《python编程快速上手-让繁琐工作自动化》第13章,非常棒的一本书,墙裂推荐;


【13】处理Excel电子表格

【13.1】Excel文档

1)Excel文档:就是一个工作簿,一个工作簿保存到xlsx文件;一个工作簿可以有多个工作表,即sheet;

【13.2】安装openpyxl模块

c++ 复制代码
D:\studynote\00-ai-llm\workbench\PythonBasicStudy\.venv\Scripts>pip install openpyxl
Collecting openpyxl
  Downloading openpyxl-3.1.5-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting et-xmlfile (from openpyxl)
  Downloading et_xmlfile-2.0.0-py3-none-any.whl.metadata (2.7 kB)
Downloading openpyxl-3.1.5-py2.py3-none-any.whl (250 kB)
Downloading et_xmlfile-2.0.0-py3-none-any.whl (18 kB)
Installing collected packages: et-xmlfile, openpyxl
Successfully installed et-xmlfile-2.0.0 openpyxl-3.1.5

【13.3】读取Excel文档

【13.3.1】使用openpyxl模块打开excel文档

python 复制代码
import openpyxl
from pathlib import Path

# 使用openpyxl模块读取excel文件
wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
print(type(wb))
# <class 'openpyxl.workbook.workbook.Workbook'>

print(wb.sheetnames)
# ['Sheet1', 'Sheet2', 'Sheet3']

sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.2】从工作簿取得工作表

1)python使用Worksheet抽象工作表

python 复制代码
sheet1 = wb['Sheet1']
print(sheet1['A1'].value)
# id

【13.3.3】从工作表sheet获取单元格cell

python 复制代码
# 打印行列坐标及值
cell = sheet1['A1']
print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value))
# [1][1] = id

# 通过数字定位行列坐标(从1开始计数)
for i in range(1, 5):
    for j in range(1, 4):
        cell = sheet1.cell(i, j)
        print(f'[%s][%s] = %s' % (cell.row, cell.column, cell.value), end='  ')
    print()
# [1][1] = id  [1][2] = name  [1][3] = addr
# [2][1] = 1  [2][2] = 张三01  [2][3] = 成都01
# [3][1] = 2  [3][2] = 张三02  [3][3] = 成都02
# [4][1] = 3  [4][2] = 张三03  [4][3] = 成都03

【13.3.5】从表中获取行和列

1)可以把Worksheet切片,取得表格中一行,一列或一个矩形区域中的所有单元格;

python 复制代码
wb = openpyxl.load_workbook(Path.cwd() / '1301-工作簿.xlsx')
sheet1 = wb['Sheet1']
sheetTuple = tuple(sheet1['A1':'A3'])
print(sheetTuple)
# ((<Cell 'Sheet1'.A1>,), (<Cell 'Sheet1'.A2>,), (<Cell 'Sheet1'.A3>,))

# 获取行与列的单元格
print("====== 从表中获取行和列 ======")
for rowOfCellObjects in sheet1:
    for cell in rowOfCellObjects:
        print(cell.coordinate, cell.value, end=' ')
    print()
# ====== 从表中获取行和列 ======
# A1 id B1 name C1 addr
# A2 1 B2 张三01 C2 成都01
# A3 2 B3 张三02 C3 成都02
# A4 3 B4 张三03 C4 成都03

2)获取整列或整行

python 复制代码
# 获取整行
print("\n======= 获取整行 =======")
rowList = list(sheet1.rows)
# rowList = [(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
# , (<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
# , (<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
# , (<Cell 'Sheet1'.A4>, <Cell 'Sheet1'.B4>, <Cell 'Sheet1'.C4>)]
print("rowList = " + str(rowList))
for rowObject in rowList:
    for cellObject in rowObject:
        print(f'%s = %s ' % (cellObject.coordinate, cellObject.value), end=' ')
    print()
# A1 = id  B1 = name  C1 = addr
# A2 = 1  B2 = 张三01  C2 = 成都01
# A3 = 2  B3 = 张三02  C3 = 成都02
# A4 = 3  B4 = 张三03  C4 = 成都03

【13.3.6】工作簿、工作表、单元格复习

1)从工作簿读取单元格涉及的所有函数,方法和数据类型;

  • 导入openpyxl模块
  • 调用 openpyxl.load_workbook()函数;
  • 取得Workbook对象; 抽象工作簿;
  • 使用active或sheetnames属性;
    • 使用Workbook对象的active属性获取工作簿的活动表;
  • 取得Worksheet对象;抽象工作表(一个工作簿包含多个工作表)
  • 使用索引或工作表的cell方法,带上row和col坐标;
  • 获取Cell对象;访问Cell.value属性;

【13.5】写入Excel文档

【13.5.1】创建并保存Excel文档

python 复制代码
import openpyxl
from pathlib import Path

wb = openpyxl.Workbook()
# 使用Workbook对象的active属性获取工作簿的活动表
sheet01 = wb.active
print(sheet01.title) # Sheet
sheet01.title = 'PythonWriteSheet01'
print(wb.sheetnames) # ['PythonWriteSheet01']
# 保存到xlsx文档
result = wb.save(Path.cwd() / '1305-01工作簿.xlsx')

【13.5.2】创建和删除工作表

1)调用 create_sheet() 和 del操作符 用于创建和删除工作表 ;

  • 注意是工作表,而不是工作簿;一个工作簿可以包含多个工作表;
python 复制代码
## 创建和删除工作表
wb = openpyxl.Workbook()
# 创建工作表
wb.create_sheet("PythonWriteSheet10")
print(wb.sheetnames)
# ['Sheet', 'PythonWriteSheet02']

# 创建工作表
wb.create_sheet(index=0, title="PythonWriteSheet00")
wb.create_sheet(index=1, title="PythonWriteSheet01")
wb.create_sheet(index=2, title="PythonWriteSheet02")
wb.create_sheet(index=3, title="PythonWriteSheet03")
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet', 'PythonWriteSheet10']

# 删除工作表
del wb['PythonWriteSheet10']
print(wb.sheetnames)
# ['PythonWriteSheet00', 'PythonWriteSheet01', 'PythonWriteSheet02', 'PythonWriteSheet03', 'Sheet']

# 保存excel文件到磁盘
wb.save(Path.cwd() / '1305-02工作簿.xlsx')
wb.close()

【13.5.3】把值写入单元格

python 复制代码
# 把值写入单元格
wb = openpyxl.Workbook()
# 创建工作表
wb.create_sheet("PythonWriteSheetA01")
sheetA01 = wb["PythonWriteSheetA01"]
sheetA01.cell(1, 1, "值1-1")
sheetA01.cell(1, 2, "值1-2")
sheetA01.cell(2, 1, "值2-1")
sheetA01.cell(2, 2, "值2-2")
wb.save(Path.cwd() / '1305-工作簿A01.xlsx')
wb.close()

相关推荐
Knock man39 分钟前
QML和C++交互
开发语言·c++·交互
褚瑱琅42 分钟前
T-SQL语言的压力测试
开发语言·后端·golang
小洛~·~42 分钟前
《深度学习入门:基于Python的理论与实现》第三章神经网络
python·深度学习·神经网络
烁3471 小时前
每日一题(小白)模拟娱乐篇14
java·开发语言·算法·娱乐·暴力
✿ ༺ ོIT技术༻1 小时前
C++11:lambda表达式
开发语言·c++
嘵奇3 小时前
深入解析 Java 8 Function 接口:函数式编程的核心工具
java·开发语言
Jackilina_Stone4 小时前
【模型量化】GPTQ 与 AutoGPTQ
人工智能·python·gptq
东方靖岚4 小时前
R语言的数据库交互
开发语言·后端·golang
橙色小博5 小时前
PyTorch中的各种损失函数的详细解析与通俗理解!
人工智能·pytorch·python·深度学习·神经网络·机器学习
小森77675 小时前
(三)机器学习---线性回归及其Python实现
人工智能·python·算法·机器学习·回归·线性回归