写入内容
举例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')
网友评论