# 前言知识点
# 工作簿 (workbook) 表单(worksheet)
# 行,列,单元格 (row,column,cell)
# 导入模块
import openpyxl
# 导入一个Excel文件
wb = openpyxl.load_workbook('demo.xlsx') # wb是一个workbook对象
# 获取工作簿中所有的工作表名称,以列表形式返回
print(wb.sheetnames)
# 用for循环打印每个表单
for sheet in wb:
print(sheet.title)
# 创建一个新的工作表
mySheet = wb.create_sheet('mySheet')
print(wb.sheetnames) # ['Sheet1', 'Sheet2', 'mySheet']
# 只操作sheet1
sheet1 = wb.get_sheet_by_name('Sheet1')
sheet2 = wb['Sheet2'] # 因为wb对象返回的是一个列表
print(sheet2) # <Worksheet "Sheet2">
# 从sheet中获取cells
ws = wb.active # 在使用active时,需手动切换工作表
print(ws)
<Worksheet "Sheet1">
print(ws['A1'])
<Cell 'Sheet1'.A1>
print(ws['A1'].value)
# 订单编号
# # 取出一个单元格 行列属性
c = ws['B1']
print('Row {}, Column {} is {}'.format(c.row, c.column, c.value))
# Row 1, Column 2 is 客户姓名
print('Cell {} is {}'.format(c.coordinate, c.value)) # coordinate 坐标
# Cell B1 is 客户姓名
print(ws.cell(row=1, column=2))
# <Cell 'Sheet1'.B1>
print(ws.cell(row=1, column=2).value)
# 客户姓名
# 举个例子-使用for循环打印单元格
for i in range(1, 4): # 这里注意,在Excel中,数字起始是从1开始的
print(i, ws.cell(row=i, column=1).value)
# 1 订单编号
# 2 A1
# 3 A2
# # 从工作表中取出整列
columnC = ws['C']
print(columnC[2].value) # 这里注意索引与Excel行表,起始位置一个是0,一个是1
# 从工作表中取出整行
row6 = ws[6]
print(row6[1].value) # 这里注意索引与Excel行表,起始位置一个是0,一个是1
# 使用切片的方式,获取部分单元格
col_range = ws['B:C']
row_range = ws[2:6]
# 遍历每列数据
for col in col_range:
for cell in col:
print(cell.value)
# 遍历每行数据
for row in row_range:
for cell in row:
print(cell.value)
# 用生成器的方法规定区单元格的范围
for row in ws.iter_rows(min_row=1, max_row=2, max_col=2):
for cell in row:
print(cell.value)
print(tuple(ws.rows))
# 直接用切片单元格的范围
cell_range = ws['A1:B3']
for rowofcellobject in cell_range:
for cellobj in rowofcellobject:
print( cellobj.value)
print('-------end--------')
# 查看表中的最大行和最大列
print('{} * {}'.format(ws.max_row, ws.max_column))
# 数字变字母 字母变数字
from openpyxl.utils import get_column_letter, column_index_from_string
print(get_column_letter(2)) # 这句代码的意思相当于把2转换成B(列)
print(column_index_from_string('AAH')) # 结果为710
GQ_on the way
发布了17 篇原创文章 · 获赞 7 · 访问量 329
私信
关注