运营的Python指南 - Python 操纵Excel
2019-11-18杂谈搜奇网37°c
A+ A-这是一份写给运营职员的Python指南。本文重要报告怎样运用Python操纵Excel。完成Excel的建立,查询和修正操纵。
相干代码请参考 https://github.com/RustFisher/python-playground
本文链接:https://www.rustfisher.com/2019/11/05/Python/Python-op-excel_openpyxl_use/
开发工具,环境
- PyCharm - 轻易好用的IDE
- Python3
这里默许你的电脑上已装有python3.x,环境变量已设置好。
引入openpyxl
这里运用openpyxl库来操纵Excel。相似的库另有xlrd。
penpyxl的基本运用要领请拜见Python openpyxl 处置惩罚Excel运用指南。
pip install openpyxl
数据预备
假定数据来自百度指数,以罕见的一些搜刮指数为例。给背面的操纵预备一些数据,把数据写入Excel中。
建立Workbook对象,猎取到当前可用的表格(sheet)。
直接运用append
要领把一行数据追加写入。末了挪用Workbook的保留要领,存储数据。
def create_excel_demo(file_path):
"""
建立Excel文件,并写入数据
:param file_path: 目的文件途径
:return none
"""
wb = Workbook()
ws = wb.active
ws.title = '搜刮指数概览'
ws.append(['关键词', '团体日均值', '挪动日均值', '团体同比', '团体环比', '挪动同比', '挪动环比'])
ws.append(['excel', 27782, 18181, -0.11, -2, 0.21, 0.02])
ws.append(['python', 24267, 8204, 0.27, 0.06, 0.56, 0.01])
ws.append(['案牍', 2411, 1690, 0.56, 0.33, 0.91, 0.46])
ws.append(['okr', 1928, 880, 0.38, 0.15, 0.29, 0.09])
ws.append(['kpi', 4212, 2784, 0.21, -0.19, 0.36, -0.22])
wb.save(file_path)
建立出来的表格,示例数据以下
关键词 | 团体日均值 | 挪动日均值 | 团体同比 | 团体环比 | 挪动同比 | 挪动环比 |
---|---|---|---|---|---|---|
excel | 27782 | 18181 | -0.11 | -2 | 0.21 | 0.02 |
python | 24267 | 8204 | 0.27 | 0.06 | 0.56 | 0.01 |
... |
读取数据
接见全部表格的数据
接见表格中所有的数据,并打印出来。
起首我们要知道表格中有数据的单元格的局限,运用sheet.max_row与sheet.max_column猎取表格的行列数目。
def read_xlsx_basic(file_path):
"""
读取Excel的数据并打印出来
"""
wb = load_workbook(file_path)
st = wb.active
end_row = st.max_row + 1
end_column = st.max_column + 1
print(st.title, '有', end_row, '行', end_column, '列')
for row in range(1, end_row):
for col in range(1, end_column):
print('{:10}'.format(st.cell(row=row, column=col).value), end='')
print()
值得注意的是,单元格下标是从1最先的。假如运用了不当的下标,报错信息
ValueError: Row or column values must be at least 1
参考: https://stackoverflow.com/questions/34492322/how-to-scan-all-sheet-cells
修正表格
有了Excel表格后,我们能够修正表格的一些花样和数据。
st
示意当前表。
调解列的宽度
用 column_dimensions 来猎取列。比方column_dimensions['A']猎取到的是第A列。
ord
要领是将字符转换为ascii码。ord('A')获得65。
这里调解的是A列到G列的宽度。
for col in range(ord('A'), ord('G') + 1):
st.column_dimensions[chr(col)].width = 15
设置单元格花样
花样,比方字体大小,对齐形式,粗体斜体等。
字体
起首我们要拿到单元格cell,这里运用st.cell(row=1, column=col)来猎取某一个格子。
Cell持有的font是不可修正的。不能运用如cell.font.size = 13
如许的操纵,会报非常。
copy要领是复制一个对象。这里复制的是font。
cell = st.cell(row=1, column=col)
font = copy(cell.font)
font.size = 13
font.bold = True
cell.font = font
对齐
对齐形式。运用alignment属性。
cell.alignment = Alignment(horizontal="center", vertical="center")
数据显现
操纵Excel时,我们能够设置单元格数据显现的体式格局,比方通例,数值,钱银,百分比等等。
这里运用的是number_format属性。
假如数据(value)是0.02,经由下面的设置后,Excel中显现的是2%。
cell.number_format = '0%'
修正数据
修正单元格的数值(value)。
修正数据起首要拿到谁人单元格cell,然后对其value赋值。
st.cell(row=2, column=7).value = 0.42 # 修正数值
修正了单元格的款式和数据后,能够翻开表格看看结果。
参考:
- https://stackoverflow.com/questions/12387212/openpyxl-setting-number-format
- https://stackoverflow.com/questions/30050716/how-to-put-two-decimals-in-cell-with-type-of-percent