運營的Python指南 - Python 操作Excel


這是一份寫給運營人員的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  # 修改數值

修改了單元格的樣式和數據后,可以打開表格看看效果。

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM