openpyxl使用
  • openpyxl的相关知识
  • openpyxl的使用

openpyxl的相关知识

1.excel文件的后缀

  03版本之前:.xls

  03版本之后:.xlsx

2.pycharm中操作excel的模块

  openpyxl模块

    该模块可以操作03版本之后的文件

    03版本之前兼容性可能不好(不建议使用)

  xlrd、wlwt模块

    xlrd控制读文件 wlwt控制写文件

    上诉模块可以操作任何版本的execl文件

3.excel本质斌不是一个文件

  修改execl文件后缀为.zip即可查看,可以看见excel表格也是会从网络获取数据,.xml为网络文件后缀

openpyx模块使用_变量名

 

 

openpyxl的使用

openpyxl的下载

方法1:

  打开DOS界面下载,或pycharm的terminal界面输入

# -i用于换源地址,如果网速快则不用换
pip3 install openpyxl -i 网络地址 

方法2:

点击file>>>settings>>>项目名>>>interperter>>>加号>>>输入模块名>>>install

openpyx模块使用_后缀_02

 创建文件

'''
执行程序时对象xlsx文件必须关闭,否则报错
'''

调用模块

from openpyxl import Workbook

创建一个对象

wb = Workbook()

保存文件

语法:

# 要在所有该对象的操作程序之后运行,否则操作无效
对象.save(r'名.xlsx')

eg:

# 保存2.xlsx表格文件
wb.save(r'2.xlsx')

创建工作簿

语法:

变量名=对象.create_sheet('名字',位置数)

eg:

# 创建名为2的工作簿
wb1=wb.create_sheet('2')

openpyx模块使用_读取数据_03

# 创建名为3的工作簿在第一位
wb2=wb.create_sheet('3',0)

openpyx模块使用_变量名_04

 

 create_sheet方法会返回当前创建的工作簿对象

eg:

wb2.title='4'

openpyx模块使用_数据_05

 

 修改工作簿名称样式

eg:

# 修改背景颜色
wb2.sheet_properties.tabColor='1072BA'

openpyx模块使用_读取数据_06

 

 查看当前excel文件所有的工作簿名称

eg:

# 查看当前excel文件所有的工作簿名称
print(wb.sheetnames)

openpyx模块使用_读取数据_07

写文件

写入方式1:

eg:

# 创建名为3的工作簿在第一位
wb2=wb.create_sheet('3',0)
# 在3工作簿中的1行A列中写入值
wb2['A1']=111

openpyx模块使用_读取数据_08

写入方法2:

eg:

# 在3工作簿中的1列3行中写入值
wb2.cell(column=1,row=3,value=333)

openpyx模块使用_数据_09

写入方法3:

eg:

# 存储一行数据
wb2.append([1,2,3,4,5])
# 插入第二行数据
wb2.append([6,7,8,9,10])

openpyx模块使用_后缀_10

 

'''
append是逐行录入数据
'''

写入计算公式

# A3单元格为A1加A2值
wb2['A3']='=sum(A1:A2)'

openpyx模块使用_读取数据_11

读数据

调用读模块

from openpyxl import load_workbook

指定读取表格文件

语法:

变量名 =load_workbook(地址,data_only=True)
"""
如果在读取数据的时候不想获取公式本身而是公式的结果需要指定data_only参数
"""

eg:

# 读取2.xlsx文件
wb =load_workbook(r'2.xlsx',data_only=True)

指定操作的工作簿

语法:

变量名 = 对象[簿名]

eg:

# 指定工作簿3
wb1 = wb['3']

读取数据方式1

# 获取数据和公式或公式
wb3['A3'].value

eg:

# 获取A3单元格数据,为7
print(wb1['A3'].value)

openpyx模块使用_获取数据_12

 

 当没有data_only参数时,输出为公式

openpyx模块使用_后缀_13

 

读取数据方式2:

# 输出第一行,第二列数据
print(wb1.cell(row=1,column=2).value)

openpyx模块使用_变量名_14

 

 

# 循环取行
for row in wb1.rows:
    # 循环取值
    for r in row:
        # 输出值
        print(r.value)

openpyx模块使用_读取数据_15

 

 

# 循环取列
for col in wb1.columns:
    # 循环取值
    for c in col:
        # 输出值
        print(c.value)

openpyx模块使用_变量名_16

 

 获取最大行数

print(wb1.max_row)

获取最大列数

print(wb1.max_column)

返回目录