单元格的操作

获取一个单元格的值

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
单元格 = 工作表['A1'].value
print(单元格)

获取第2列1,3,5,7行的数据

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
for i in range(1,8,2):
    print(i,工作表.cell(row=i,column=2).value)

获取某一区域的单元格的值

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
单元格区域 = 工作表['A1:C10']
for 数据 in 单元格区域:    # 循环每行
    for 单元格 in 数据:   # 循环每个单元格
        print(单元格.value)
import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径) 
工作表 = 工作簿['Sheet1']  
# 行和列的范围  iter_cols按列
for 行 in 工作表.iter_rows(min_row=1,max_row=10,min_col=1,max_col=3):
    for 单元格 in 行: 
        print(单元格.value)

读取数据

import openpyxl as vb
路径 = r'c:/test2.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
最大行 = 工作表.max_row
最大列 = 工作表.max_column
A1单元格的值 = 工作表['A1'].value
A1单元格的值2 = 工作表.cell(1,1).value
A1单元格的列 = 工作表['A1'].column
A1单元格的行 = 工作表['A1'].row

写入数据

向一个单元格写入数据

import openpyxl as vb
路径 = r'c:/test2.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
工作表.cell(1,5,value='孙兴华')
工作表['E2']='兴华'
工作簿.save(路径)

工作表.append(列表) # 在最后一列写入数据

行列的插入与删除

插入列:工作表.insert_cols(位置,列数),其中位置是指在工作表的第几列前插入多少列。

插入行:工作表.insert_rows(位置,行数),其中位置是指在工作表的第几行前插入多少行。

删除列:工作表.delete_cols(位置,列数),从指定位置开始向后删除指定的列数。

删除行:工作表.delete_rows(位置,行数),从指定位置开始向下删除指定的行数。

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
工作表.insert_cols(idx=2,amount=5)
工作表.insert_rows(idx=2,amount=5)
工作表.delete_cols(idx=2,amount=5)
工作表.delete_rows(idx=2,amount=5)
工作簿.save(路径)

移动单元格

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
# rows和cols正数为向下或向右、负数为向左或向上
工作表.move_range("A1:C3",rows=10,cols=10)
工作簿.save(路径)

冻结单元格

import openpyxl as vb
路径 = r'c:/test.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
工作表.freeze_panes = "C3"
工作簿.save('c:/1.xlsx')

合并与取消合并单元格

工作表.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

import openpyxl as vb
路径 = 'c:/test3.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
工作表.merge_cells('B3:F5')   # 合并
工作表.unmerge_cells('B3:F5') # 取消合并
工作簿.save(路径)

使用公式

import openpyxl as vb
路径 = 'c:/test3.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
工作表['F1'] = '=sum(C1:E1)'
工作簿.save(路径)
import openpyxl as vb
路径 = 'c:/test3.xlsx'
工作簿 = vb.load_workbook(路径,data_only=True)
工作表 = 工作簿['Sheet1']
工作簿.save(路径)
print(工作表['F1'].value)

对行列进行分组

import openpyxl as vb
路径 = 'c:/test3.xlsx'
工作簿 = vb.load_workbook(路径,data_only=True)
工作表 = 工作簿['Sheet1']
工作表.column_dimensions.group('A','D', hidden=True)
工作簿.save(路径)

给单元格添加批注

import openpyxl as vb
路径 = 'c:/test3.xlsx'
工作簿 = vb.load_workbook(路径,data_only=True)
工作表 = 工作簿['Sheet1']
批注 = vb.comments.Comment('这里写批注','孙兴华')
工作表['F20'].comment = 批注
工作表['F21'].comment = 批注
工作簿.save(路径)