美文网首页Python
openpyxl操作excel

openpyxl操作excel

作者: Chaweys | 来源:发表于2021-01-30 16:45 被阅读0次

写入内容

举例1、创建一个excel文件,并写入简单内容
import openpyxl

wb=openpyxl.Workbook()     #定义excel文件的workbook对象
sheet=wb.active            #激活workbook对象,即定义sheet页对象-即获得的是默认的第一页的sheet页的对象


#方式一:
#sheet页对象中根据单元格的索引添加内容,数据可以直接分配到单元格中(可以输入公式)
sheet['A1']='30'
sheet['A2']='31'


#方式二:
#使用cell()方法传入 行,列 指定值,这里第二行第二列值为2
sheet.cell(row=2,column=2).value=2


#方式三:
#使用append()方法,在sheet对象的底部添加一组数据
rows=(
    (4,5,6),
    (7,8,9),
    (10,11,12)
)
for row in rows:
    sheet.append(row)


wb.save('test01.xlsx')     #保存至excel文件
save-excel.png

读取内容

举例2、读取excel文件
import openpyxl
wb=openpyxl.load_workbook('test01.xlsx')
#sheet=wb.active  #这种只是默认的获取到第一个sheet页的对象
或者:
sheet=wb.get_sheet_by_name('Sheet1')


#方式一:
#指定sheet页对象的单元格获取value
a1=sheet['A1'].value
a2=sheet['A2'].value
print(a1)
print(a2)
'''
30
31
'''


#方式二:
#通过sheet页对象cell指定单元格获取value
a3=sheet.cell(row=2,column=2).value
print(a3)
'''
2
'''


#方式三:
#通过范围运算读取两列数据
cells=sheet['A3' : 'B5']
for c1,c2 in cells:
    print('{0:2} {1:2}'.format(c1.value,c2.value))
'''
{0:2} 是format的格式化输出,冒号后面未接其它字符默认使用空格占用两个字符
 4  5
 7  8
10 11
'''

#方式四:
#通过制定sheet页的名称获取sheet页对象
ws=wb['FirstSheet']      #通过workbook对象的sheet页名称获取sheet页对象
rows=ws.rows             #获取所有不为空的行-迭代器
for row in rows:         #迭代出来每行是个对象
    print(row[1].value)  #通过每行的索引获取值,索引从0开始


from openpyxl.styles import Font,colors
ws=wb['FirstSheet']
'''
italic=True表示斜体,strike=False表示不带删除线
'''
font=Font(u'微软雅黑',size=20,italic=True,strike=False,color=colors.RED,bold=True)
ws.cell(row=6,column=1,value="哈哈").font=font

或:
ws.cell(row=6,column=1).font=Font(u'微软雅黑',size=20,italic=True,strike=False,color=colors.RED,bold=True)
ws.cell(row=6,column=1).value="哈哈"

wb.save('test01.xlsx')
save-excel.png
读取excel.png

iter_rows()按行迭代读取内容

import openpyxl
wb=openpyxl.Workbook()
sheet=wb.active

rows=(
    (1,2,3),
    (4,5,6),
    (7,8,9),
    (10,11,12)
)

for row in rows:
    sheet.append(row)

for row in sheet.iter_rows(min_row=1,min_col=1,max_row=4,max_col=3):
    #遍历每行对象中的单元格
    for cell in row:     
        print(cell.value,end=' ')
    print('\n')

wb.save('test02.xlsx')
'''
1 2 3 

4 5 6 

7 8 9 

10 11 12 
'''

iter_cols()按列迭代读取内容

举例4、iter_cols()指定行和列的最小值和最大值确定范围,返回列对象
import openpyxl

wb=openpyxl.Workbook()
sheet=wb.active

rows=(
    (1,2,3),
    (4,5,6),
    (7,8,9),
    (10,11,12)
)

for row in rows:
    sheet.append(row)


for col in sheet.iter_cols(min_row=1,min_col=1,max_row=4,max_col=3):
    #遍历每列对象中的单元格
    for cell in col:
        print(cell.value,end=" ")
    print("\n")

wb.save("test03.xlsx")
'''
1 4 7 10 

2 5 8 11 

3 6 9 12
'''

读取内容并统计statistics

import openpyxl
import statistics as stats

wb=openpyxl.load_workbook('test04.xlsx')
#sheet=wb.active  #这种只是默认的取第一个sheet页
或者:
sheet=wb.get_sheet_by_name('Sheet1')

rows=sheet.rows        #获取单元格不为空的所有行

values=[]

for row in rows:       #遍历每行
    for cell in row:   #遍历每个单元格
        values.append(cell.value) #将每个单元的值写入到列表values中


print("列表长度值:{0}".format(len(values)))
print("列表最大值:{0}".format(sum(values)))
print("列表最小值:{0}".format(min(values)))
print("列表平均值:{0}".format(max(values)))
print("列表平均值mean:{0}".format(stats.mean(values)))
print("列表中位数median:{0}".format(stats.median(values)))
print("列表标准差stdev:{0}".format(stats.stdev(values)))
print("列表方差variance:{0}".format(stats.variance(values)))

'''
列表长度值:12
列表最大值:78
列表最小值:1
列表平均值:12
列表平均值mean:6.5
列表中位数median:6.5
列表标准差stdev:3.605551275463989
列表方差variance:13.0
'''

Openpyxl 过滤器&排序数据

Openpyxl 过滤器&排序数据
import openpyxl

wb=openpyxl.Workbook()
sheet=wb.active

data = [
    ['Item', 'Colour'],
    ['pen', 'brown'],
    ['book', 'black'],
    ['plate', 'white'],
    ['chair', 'brown'],
    ['coin', 'gold'],
    ['bed', 'brown'],
    ['notebook', 'white'],
]


for r in data:
    sheet.append(r)

#设置过滤的单元格为A1到B8
sheet.auto_filter.ref='A1:B8'
#设置过滤的列1为第二列,从0开始代表第一列,过滤的值为['brown','white']
sheet.auto_filter.add_filter_column(1,['brown','white'])
#设置排序的列为B2到B8
sheet.auto_filter.add_sort_condition('B2:B8')

wb.save('test05.xlsx')
test05-excel.png
test05-excel2.png

获取单元格的维度dimensions

import openpyxl
wb=openpyxl.Workbook()
sheet=wb.active

rows = [
    (88, 46),
    (89, 38),
    (23, 59),
    (56, 21),
    (24, 18),
    (34, 15)
]

for row in rows:
    sheet.append(row)

print(sheet.dimensions)   #获取该sheet页的规模尺寸结果:A1:B6

print("最小行:{0}".format(sheet.min_row))
print("最大行:{0}".format(sheet.max_row))
print("最小列:{0}".format(sheet.min_column))
print("最大列:{0}".format(sheet.max_column))

wb.save('test06.xlsx')

相关文章

网友评论

    本文标题:openpyxl操作excel

    本文链接:https://www.haomeiwen.com/subject/bftktltx.html