2openpyxl-读取表格数据插入表格数据删除表格数据冻结单元格

一固定范围读取数据:

1读取单元格数据的两种方法:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path) #读取工作簿
worksheet = workbook['sheet1'] #指定工作表
cell1 = worksheet['C1'].value #查看A1单元格的值
cell2 = worksheet.cell(row=1,column=1).value
print(cell1)
print(cell2)

2一共6行数据,只显示第二列的奇数行:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path) #读取工作簿
worksheet = workbook['sheet1'] #指定工作表
for i in range(1,6,2):
    print(i,worksheet.cell(row=i,column=2).value)

3对整表进行操作通过切片的方式切出你想要的数据

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
a = list(worksheet.values)[0:3] #从整张表中切3行数据
print(a)

4获取指定区域内单元格的数据

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#从哪一行开始到哪一行结束,从哪一列开始,到哪一列结束
range = worksheet.iter_rows(min_row=0,max_row=5,min_col=3,max_col=5)
for line in range:
    for cell in line:
        print(cell.value)

5获取每一行和每一列的方法

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#for linw in worksheet.rows:
for lie in worksheet.columns:
    for cell in lie:
        print(cell.value)

6数字转字母,字母转数字

#数字转字母,字母转数字
import openpyxl as vb
数字转字母 = vb.utils.get_column_letter(26)
print(数字转字母)
字母转数字 = vb.utils.column_index_from_string('Z')
print(字母转数字)

二动态读取数据:

1)获取最大行和最大列:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
max_line = worksheet.max_row #最大行
max_col = worksheet.max_column #最大列
print('最大行是:',max_line)
print('最大列是:',max_col)
A1单元格所在的列 = worksheet['A1'].column
A1单元格所在的行 = worksheet['A1'].row
print(A1单元格所在的列)
print(A1单元格所在的行)

2)获取指定列的数据:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
list = []
for i in worksheet['C']: #遍历c列数据
    print(i.value)
    list.append(i.value)
print(list)
print(list[1:])

3)拿到第一行的数据:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
list = []
for i in worksheet[1]: #遍历c列数据
    list.append(i.value)
print(list)

4)拿到所有行的数据

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
list = []
for line in worksheet.rows:
    for cell in line:
        list.append(cell.value)
print(list)

三写入和插入数据:

1)在excel中追加一行数据:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
list = ['运单编号','重量','内物','成本中心名称','一级部门','二级部门']
worksheet.append(list)
workbook.save(path)

2)向指定区域内写批量内容:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#先把行遍历出来
for line in worksheet['A1:H6']:
    #再把单元格遍历出来
    for cell in line:
        #向单元格写内容
        cell.value = 520
workbook.save(path)

3)在第2列插入表格,一共插入5列:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#在第二列开始插入,共插入五列
worksheet.insert_cols(idx=2,amount=5)
workbook.save(path)

4)在第二行开始插入,一共插入5行:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#在第二行开始插入,共插入五行
worksheet.insert_rows(idx=2,amount=5)
workbook.save(path)

5)从第二行开始删,一共删5行:

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#从第二行开始删,删5行
worksheet.delete_rows(2,5)
workbook.save(path)

6)从第二列开始删,一共删除5列

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#从第二列开始删,一共删5列
worksheet.delete_cols(2,5)
workbook.save(path)

四移动单元格和冻结单元格:

1)把A1到C3的表数据向下移动10行,向右移动11行

import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#向下移动5行,向右移动8行
worksheet.move_range('A1:C3',rows=10,cols=11)
workbook.save(path)

2)冻结表头(A2单元格):

#冻结单元格
import openpyxl as vb
path = r'C:/Users/66907/Desktop/test2021.xlsx'
workbook = vb.load_workbook(path)
worksheet = workbook['sheet1']
#冻结单元格
worksheet.freeze_panes = 'A2'
workbook.save(path)

 

posted @ 2021-12-23 16:44  linuxTang  阅读(381)  评论(0)    收藏  举报