使用openpyxl操作Excel

1.Workbook对象

Workbook相当于是一个文件,WorkSheet就是文件里面的每个具体的表,比如新建Excel文件里面的'Sheet1'这个,一个Workbook里面有一个或多个WorkSheet.

1.1 获取Workbook对象

两种方式

(1)新建对象:

from openpyxl import Workbook
wb = Workbook()
wb.save('C:\\Users\\Administrator\\PycharmProjects\\excel\\test.xlsx')

(2)导入已存在的对象:

from openpyxl import load_workbook
file_path = 'C:\\Users\\Administrator\\PycharmProjects\\excel\\test.xlsx'
wb = load_workbook(file_path)

1.2 Workbook属性

print(wb.worksheets)   返回所有WorkSheet的列表,类型为list
print(wb.active)            返回当前默认选中的WorkSheet
print(wb.sheetnames)  返回所有WorkSheet的列表,类型为list

使用openpyxl操作Excel

1.3 Workbook方法
get_sheet_names():  同sheetnames

get_active_sheet():   同active属性

get_sheet_by_name(name):  根据名称获取WorkSheet

remove(worksheet):   删除一个WorkSheet,注意是WorkSheet对象,不是名字

save(filename):   保存到文件,记住有写入操作记得保存!!!

使用openpyxl操作Excel使用openpyxl操作Excel

2  worksheet对象

2.1 获取worksheet对象

ws1 = wb.active   # 获取默认打开的(active)的WorkSheet

ws2 = wb.create_sheet()  # 创建一个WorkSheet,可传title和index两个参数,不传生成的WorkSheet名在'Sheet'后面递增加数字。

ws3=wb['Sheet1']  # 通过名称获取WorkSheet

2.2 worksheet属性

rows: 返回所有有效数据行,有数据时类型为generator,无数据时为tuple

columns:返回所有有效数据列,类型同rows

max_column:有效数据最大列

max_row:有效数据最大行

min_column:有效数据最小列,起始为1

min_row:有效数据最大行,起始为1

values:返回所有单元格的值的列表,类型为tuple

title:WorkSheet的名称

2.3 worksheet方法

cell(coordinate=None, row=None, column=None, value=None)

获取指定单元格或设置单元格的值,具体使用在cell下面介绍

3 操作cell

3.1 获取cell对象

(1)使用WorkSheet的Cell方法

c1=ws.cell(1,1)

c2=ws.cell(row=1,column=1) #获取A1单元格

使用openpyxl操作Excel 2通过坐标获取Cell

c3=ws['A1']# 获取多个

c3=ws['A1:A3']  #返回多行数据,类型为tuple

注意此处获取的不是单元格的值。

使用openpyxl操作Excel 3.2 设置Cell的值

(1)直接使用WorkSheet的cell方法设置

ws.cell(row=1,column=1,value=10)

(2)设置Cell对象value属性

c1=ws.cell('A1')

c1.value=100

3.3 Cell属性

column:所在列,起始为1

row:所在行,起始为1

coordinate: 所在坐标,如'A1'

parent: 所属的WorkSheet

value: 单元格的值

3.4 Cell方法

offset(row=0, column=0): 偏移

# -*- coding:utf-8 -*-
import os
from openpyxl import Workbook
from openpyxl import load_workbook
file_path = 'C:\\Users\\Administrator\\PycharmProjects\\excel\\test.xlsx'
if os.path.exists(file_path):
   print("excel file exist")
else:
   wb = Workbook()
   wb.create_sheet('Sheet1')#新建sheet页
   wb.save(file_path)
   
"""
a = wb.worksheets
b = wb.active
c = wb.sheetnames
d = wb.get_active_sheet
e = wb.get_sheet_names
f = wb.get_sheet_by_name
"""
wb = load_workbook(file_path)  #加载workbook对象
ws = wb.active
ws.cell(row=1, column=1, value=10) #写入单元格
ws.cell(row=2, column=1, value=10)
ws.cell(row=3, column=1, value=10)
wb.save(file_path)  #保存文件
a1 = ws.cell(1, 1)
    
print(a1.column, a1.row, a1.value, a1.parent)
a2 = ws.cell(row=1, column=1)
print(a2.column, a2.row, a2.value, a2.parent)
a3 = ws['A1:A3']
print(a3)