Python读写Excel文档(用openpyxl)

声明:本文是参照一只爱吃橙子的小蜗牛沙振宇相关文章整理而成(点他们的名字可链接原文),我逐条测试、整理,剔除其中运行不成功的部分(原因不明),补充小段代码及注解,并按我的风格,所有变量都用中文,使其更合理更易于初学者理解。

一直在寻找Python读写Excel文档好用的模块,甚至买了xlrd的书,但感觉不太好用。查询了沙振宇的文章,并用一只爱吃橙子的小蜗牛的代码逐一测试,决定采用openpyxl模块来学习。现将其基本方法整理如下:

'''用openpyxl读写Excel文档'''
import logging
# logging.disable(logging.CRITICAL)
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(levelname)s:%(message)s')
#logging.debug(变量)
#----------------------------------------------------------------------------------------------
'''Python三种常用的Excel电子表格文档处理模块简介:
XlsxWriter:可创建xls和xlsx,但不能读取它们,功能强,数据可超过65535;
xlrd&xlwt:可读写xls和xlsx,功能简单,但数据不能超过65535;
OpenPyXL:可读写修改xlsx,不可处理xls,功能复杂,数据可超过65535。
'''
#本例仅使用OpenPyXL
'''
用openpyxl读写Excel文档
openpyxl不能读取xls,只能读取xlsx
'''
#openpyxl的安装方法:
#pip install openpyxl

#读取Excel文件,需要导入相关函数
#coding=gbk
from openpyxl import load_workbook
表格 = load_workbook('G:\\Xct\\python\\三项目备案人员银行账号汇总.xlsx')
#-----------------------------------------------------

# 获得所有sheet的名称
print(表格.get_sheet_names())
# 根据sheet名字获得sheet
工作表 = 表格.get_sheet_by_name('Sheet1')
# 获得sheet名
print(f'根据sheet名字获得工作表名:{工作表.title}')
# 获得当前正在显示的sheet, 也可以用wb.get_active_sheet()
表格名 = 表格.active
print(f'获得当前正在显示的工作表:{工作表.title}')
#-----------------------------------------------------

# 获取某个单元格的值,观察excel发现也是先字母再数字的顺序,即先列再行
b3 = 工作表['B3']
print('B3=',b3.value)
print(f'行({b3.column},列 {b3.row}) 的值是 {b3.value}')
#----------------------

单元格_2_2=工作表.cell(row=2,column=2)
单元格_2_2_值=工作表.cell(row=2,column=2).value
print('第2行第2列',单元格_2_2)
print('第2行第2列值',单元格_2_2_值)
#-----------------------------------------------------

# 获得最大列和最大行
print('最大行数:', 工作表.max_row)
print('最大列数:', 工作表.max_column)
#-----------------------------------------------------

#获取整行或整列的数据
行3=[item.value for item in list(工作表.rows)[2]]
print('第3行值',行3)
#以上是获取整行的数据
列2=[item.value for item in list(工作表.columns)[1]]
print('第2列值',列2)
#以上是获取整列的数据
#-------------------------------------------------------

#获取列表所有数据

print('通过工作表.cell获取所有数据方法一:')
for i in range(1, 4):
    for j in range(1, 3):
        print(工作表.cell(row=i, column=j).value)

print('通过工作表.cell获取所有数据方法二:')
for 行列 in 工作表['A1':'B3']:
    for 列 in 行列:
        print(列.value)
#-------------------------------------------------------

#将数据写入Excel
#需要导入WorkBook
from openpyxl import Workbook
新工作簿 = Workbook()
#这样就新建了一个新的工作表(只是还没被保存)
#若要指定只写模式,可以指定参数write_only=True
# 一般默认的可写可读模式就可以了
print(新工作簿.get_sheet_names())
#-------------------------------------------------------

# 默认提供一个名叫Sheet的表,office2016下新建提供默认Sheet1
# 改工作表的名称
新工作簿['Sheet'].title = '工作表1'
print(新工作簿.get_sheet_names())
#-------------------------------------------------------

# 新建一个工作表,可以指定索引,适当安排其在工作簿中的位置
新工作簿.create_sheet('工作表2', index=1)
新工作簿.create_sheet('工作表3', index=2)
print(新工作簿.get_sheet_names())
# 被安排到第二个工作表,index=0就是第一个位置
#-------------------------------------------------------

#注意:当“新工作簿.xlsx”文档处理打开状态下,
# 以下代码无法对其做任何改变
#写入单元格
新工作簿['工作表1']['A1'] = 'A1单元格值'

#可以用各种基本语法写入单元格
import random
for 变量 in range(2,9):
    单元格='B'+str(变量)
    随机数=random.randint(1,100)
    新工作簿['工作表1'][单元格] = 随机数
新工作簿['工作表1']['A9'] = 'B2到B8的平均值:'

# 还可以使用公式
# B9处写入平均值
新工作簿['工作表1']['B9'] = '=AVERAGE(B2:B8)'

# 删除某个工作表
del 新工作簿['工作表2']
#-------------------------------------------------------

#保存文档
新工作簿.save('G:\\Xct\\python\\新工作簿.xlsx')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

将出东方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值