python中openpyxl模块对excel的处理学习(二)活动表单的设置以及对excel的写入列表,字典(写入无效,可能是没保存)

活动表单的设置有助于我们对excel中的对应工作表进行操作

在openpyxl模块中对excel的写入(我学习的)有两种方法ws.cell(row,column).value=''和对excel写入中append(列表)函数

  1. 活动表单的设置

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()    # 活跃表单的设置
    
  1. 方法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中原有的内容进行覆盖(参考下个方法)

  1. 对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中原有的内容进行覆盖)

本人新手,若有错误,欢迎指正

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值