Python使用openpyxl模块操作Excel表格

'''
Excel文件三个对象

workbook: 工作簿,一个excel文件包含多个sheet。
sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。
cell: 单元格,存储数据对象
'''

import openpyxl
from openpyxl import Workbook, load_workbook

wb = Workbook()
ws1 = wb.active  # active方法得到第一个sheet
ws2 = wb.create_sheet('MySheet1')   # 插入到最后default
ws3 = wb.create_sheet('MySheet3', 2)   # 插入到制定位置,0表示最前面

ws1.title = 'newSheet1'   # 创建的sheet的名称会自动创建,按照sheet,sheet1,sheet2自动增长,通过title属性可以修改其名称
ws4 = wb.create_sheet(title='Sheet4')
ws4.sheet_properties.tabColor = "1072BA"
# 默认的sheet的tab是白色的,可以通过 RRGGBB颜色来修改sheet_properties.tabColor属性从而修改sheet tab按钮的颜色:
# 当你设置了sheet的名称,可以将其看成workbook中的一个key。也可以使用openpyxl.workbook.Workbook.get_sheet_by_name() 方法

# 单元格赋值,3种方式
ws4.cell(row=2, column=3, value=100)
ws4.cell(row=2, column=4).value = 200
ws4['E2'] = 300

ws4.cell(3, 3, 666)

# ws.append(iterable)
# 添加一行到当前sheet的最底部(即逐行追加从第一行开始) iterable必须是list,tuple,dict,range,generator类型的。 1,如果是list,将list从头到尾顺序添加。 2,如果是dict,按照相应的键添加相应的键值
# ws.append([‘This is A1’, ‘This is B1’, ‘This is C1’])
# ws.append({‘A’: ‘This is A1’, ‘C’: ‘This is C1’})
# ws.append({1: ‘This is A1’, 3: ‘This is C1’})




tableTitle = ['age' , 'name' , 'sex']

line1 = ['18', 'John', 'M']
line2 = ['20', 'Helen', 'F']

for col in range(len(tableTitle)):
    c = col + 1
    ws1.cell(row=1, column=c).value = tableTitle[col]


excel1 = load_workbook('E:/test01.xlsx')
excel2 = load_workbook('E:/test02.xlsx')
# print(excel1.sheetnames)
sheetname1 = excel1.sheetnames[-1]
sheetname2 = excel2.sheetnames[-1]

# t1 = excel1[sheetname1]
t1 = excel1['sheetl']
t2 = excel2[sheetname2]

t1['D2'] = 'hello'

for i in range(10):
    t1["C%d" % (i+1)].value = i + 1

t1['E1'].value = "=SUM(C7:C8)"


t1.append(line1)
t1.append(line2)

print(t1['E1'].value)
excel1.save('E:/new01.xlsx')



# print("A列:", t1['A'])
# print("1行:", t1['1'])
# print("B6格的值:", t1['B6'].value)
# print("A4格的值:", t1.cell(row=4, column=1).value)   # 可简写为 t1.cell(4,1).value
#
# 需写入的表,再打开的状态下是不能成功执行代码的

# 先用load_workbook读取一个excel,修改之后save成原来的文件,会报错:PermissionError: [Errno 13]


# print("最大行数:", t1.max_row)
# print("最大列数:", t1.max_column)
# print("最小列数:", t1.min_column)
# print("
")
# print("B列的值为:")
# for i in t1['B']:
#     print(i.value, end='
')

print("
")
print("表格内容如下:")
for r in range(t1.max_row):
    r += 1
    for c in range(t1.max_column):
        c += 1
        print(t1.cell(r, c).value, end="	")   # 使用end实现不换行输出
    print("
")

# for row in t1.iter_rows(min_col=1, min_row=1, max_col=3, max_row=3, values_only=True):
#     for cell in row:
#         print(cell, end='
')
原文地址:https://www.cnblogs.com/karl-python/p/14481372.html