這是一份寫給運營人員的Python指南。本文主要講述如何使用Python操做Excel。完成Excel的建立,查詢和修改操做。
相關代碼請參考 https://github.com/RustFisher/python-playgroundpython
本文連接:https://www.rustfisher.com/2019/11/05/Python/Python-op-excel_openpyxl_use/git
開發工具,環境github
這裏默認你的電腦上已經裝有python3.x,環境變量已經配置好。python3.x
這裏使用openpyxl庫來操做Excel。相似的庫還有xlrd。bash
penpyxl的基礎使用方法請參見Python openpyxl 處理Excel使用指南。app
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獲取表格的行列數量。excel
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 # 修改數值
修改了單元格的樣式和數據後,能夠打開表格看看效果。
參考: