01-openpyxl使用

# 前言知识点
# 工作簿 (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
发布了17 篇原创文章 · 获赞 7 · 访问量 328

猜你喜欢

转载自blog.csdn.net/qq_41506882/article/details/104066502