活动表单的设置有助于我们对excel中的对应工作表进行操作
在openpyxl模块中对excel的写入(我学习的)有两种方法ws.cell(row,column).value=''和对excel写入中append(列表)函数
活动表单的设置
from openpyxl import Workbook, load_workbook
def openpyxl_test3(): # 活跃表单的设置
wb = load_workbook('openpyxl.xlsx')
ws = wb.active # 默认活跃第一个工作表
print('当前活跃表单为:', ws.title)
wb.active = 2 # 更改活跃表单
ws = wb.active
print('当前活跃表单为:', ws.title)
# wb.active = 10 # 索引超过,报错'NoneType' object has no attribute 'title'
# ws = wb.active
# print('当前活跃表单为:', ws.title)
if __name__ == '__main__':
openpyxl_test3() # 活跃表单的设置
方法ws.cell(row,column).value=''实现按行写入与按列写入
from openpyxl import Workbook, load_workbook
def openpyxl_test4(): # openpyxl中对excel中的单元格进行写入
wb = load_workbook('openpyxl.xlsx')
ws = wb.active # 默认活跃第一个工作表
content = [1, 2, 3]
# 对excel进行按行写入(第一列的第一二三行) 结果如图1
for row in range(1, len(content)+1): # 工作簿行列号最低索引为1
ws.cell(row, 1).value = content[row-1]
# 对excel的第二个表单进行按列写入(第一行的第一二三列) 结果如图2
wb.active = 1
ws = wb.active
for conlumn in range(1, len(content)+1):
ws.cell(1, conlumn).value = content[conlumn-1]
wb.save('openpyxl.xlsx')
if __name__ == '__main__':
openpyxl_test4() # openpyxl中对excel中的单元格进行写入
输出结果:
图1 对excel的第一个表单进行按行写入(第一列的第一二三行):
图2 对excel的第二个表单进行按列写入(第一行的第一二三列):
方法ws.cell(row,column).value=''会对excel中原有的内容进行覆盖(参考下个方法)
对excel写入中append(列表)函数及对excel的写入列表,字典
from openpyxl import Workbook, load_workbook
def openpyxl_test5(): # openpyxl用append函数对excel的写入
wb = load_workbook('openpyxl.xlsx')
ws = wb.active
content = [1, 2, 3] # 数据为列表
ws.append(content) # append函数是追加,不是覆盖,默认进行按列写入,即第一行的第一,二,三列
for i in range(len(content)): # 用append进行按行写入,即第一列的第一二三行
ws.append([content[i]]) # 在这里append函数()中一定要是一个列表
# 结果如下图3
# 数据为字典,按行写入(一个键值对一行) 结果如下图4
contentdic = {'name': '李华', 'age': '12', '爱好': '篮球'}
for content1 in contentdic.items():
ws.append(content1)
# 按行写入(一个键值对一列) 结果如下图5
print(len(contentdic)) # 测试有多少个键值对
i = 1 # 用于记录第几个content,第几个content存入第几列
for content in contentdic.items():
ws.cell(1, i).value = content[0]
ws.cell(2, i).value = content[1]
i += 1
wb.save('openpyxl.xlsx')
print(ws.max_row) # 最大行 # 结果:7
print(ws.max_column) # 最大列 # 结果:3 空表有可能会报错
if __name__ == '__main__':
openpyxl_test5() # append()函数及对excel的写入列表,字典
append函数是追加,不是覆盖。
图3 对excel写入中append(列表)函数结果显示(数据为列表):
图4 对excel的写入字典(append(列表)函数默认按行写入)
图5 对excel的写入字典按列写入(ws.cell(row,column).value=''会对excel中原有的内容进行覆盖)
本人新手,若有错误,欢迎指正