首頁>Club>
4
回覆列表
  • 1 # 鹹魚翻身

    Python處理Excel的方式

    python對excel的操作是透過匯入相應的功能庫,然後利用庫裡的模組寫程式碼實現的。與excel有關的庫一般包括:xlrd、xlwt、xlutils、openpyxl、xlsxwriter,這五個庫用法各異,綜合來說,優先推薦opengyxl,不建議全部匯入有備無患的想法。各庫功能用法說明如下:

    1、xlrd:讀取excel檔案的庫

    匯入後,執行對excel檔案開啟、讀取資料操作。比如:

    import xlrd # 匯入xlrd庫

    wb = xlrd.open_workbook(r"e:\test.xls")

    sht = wb.sheets()[0]

    aa = sht.name

    bb = sht.cell_value(1, 1)

    print(aa, bb)

    程式碼解析:

    1、匯入xlrd庫

    2、開啟e:\test.xls檔案,wb代表該開啟的工作薄

    3、sht代表wb工作薄裡第一個表單

    4、aa代表sht表單的表單名

    5、bb代表sht表單裡第2行第2列單元格的值

    6、在終端輸出aa、bb,檢驗執行效果。

    此時,若想修改bb單元格的值,是不可以的,因為匯入的xlrd庫只支援讀取,不支援寫入、修改

    2、xlwt:向excel表格寫入資料的庫

    匯入後,執行建立新表格,寫入資料操作,比如:

    import xlwt

    wb = xlwt.Workbook()

    sht = wb.add_sheet("表1")

    sht.write(0, 0, "測試資料")

    wb.save(r"e:\python\建立表.xls")

    程式碼解析:

    1、匯入xlwt庫

    2、wb代表剛建立的工作薄

    3、sht代表在wb工作薄中建立表單,表單名為“表1”

    4、在sht表單中的a1單元格寫入“測試資料”

    5、儲存工作薄路徑及檔名為:"e:\python\建立表.xls"

    3、xlutils:修改excel檔案的庫

    匯入後,執行開啟既有excel表格資料的修改等操作,比如:

    import xlrd

    import xlutils as cp

    wb = xlrd.open_workbook(r"e:\test.xls")

    aa = cp.copy.copy(wb)

    sht = aa.get_sheet(0)

    sht.write(1, 1, "xxx")

    aa.save(r"e:\test.xls")

    程式碼解析:

    1、2、匯入xlrd庫和xlutils庫

    3、開啟"e:\test.xls"檔案

    4、aa代表複製剛才開啟的檔案

    5、sht代表複製的檔案第一個表單

    6、向sht表單第2行第2列寫入“XXX”

    7、還是用原名儲存檔案,完成檔案內容的修改。

    以上三個庫第一次使用時可能會提示報錯:

    提示未找到xlrd庫

    這是因為系統裡沒有對應的xlrd庫造成的,我們用pip方式先給系統裡安裝庫:開啟cmd命令,輸入

    pip install xlrd

    回車,開始安裝。稍等片刻,出現下面的介面即完成安裝:

    再回到vscode介面,提示已經沒問題了。

    同理,透過pip install xlwt,ipip install xlutils完成xlwt庫和xlutils庫的匯入,就可以放心使用了。

    以上庫存在的不足:

    1、三個庫分別有各自的功能,一般需要同時使用才能滿足實際使用,用起來比較麻煩。

    2,xlwt庫和xlutils庫寫入和修改操作,都只能儲存為.xls格式,若儲存為.xlsx格式,則開啟檔案時會提示格式錯誤。

    3、寫入操作後,未儲存檔案時讀取不到剛寫入的資料,讀取的還是未寫入之前的資料,只有儲存後在讀取才能得到正確結果。

    4、openpyxl庫

    用opengyxl庫操作excel,則能輕鬆解決上面三個庫的不足,且程式碼更符合excel使用習慣。

    import openpyxl

    wb = openpyxl.load_workbook("e:\dest.xlsx")

    sht = wb["sy"]

    print(sht["a2"].value)

    sht["a2"].value = "新名字"

    print(sht["a2"].value)

    wb.save("e:\dest.xlsx")

    程式碼解析:

    1、匯入openpyxl庫

    2、開啟e:\test.xls檔案,wb代表該開啟的工作薄

    3、sht代表wb工作薄里名字為sy的表單

    4、讀取輸出sht表單a2單元格的內容

    5、給sht表單a2單元格寫入資料“新名字”

    6、再次讀取輸出sht表單a2單元格的內容,會發現本次輸出的就是剛才寫入的"新名字"

    7、儲存檔案,不更改檔名。

    不足之處:不能操作.xls檔案。

    5、xlsxwriter庫:可在excel檔案裡寫入並設定圖表的庫,有圖表要求的,後期專題學習。6、com呼叫Excel的API庫:透過COM呼叫,實現Python對excel操作的方法,寫法與VBA非常相似,個人認為還不如python的openpyxl好用,且設定過程相對複雜,以後有機會再介紹。理論結合實際,我們用一個真實案例來體驗一下python處理excel資料的感覺:

    檔案“刪除最小值.xlsx”中,(A:D)四列資料,希望刪除每行的最小值,保留三個值,寫入到後面(F:H)列中。

    1、匯入openpyxl庫來處理:

    import openpyxl

    2、開啟檔案,定義表單:

    sht = wb["資料"]

    3、資料處理(請自動忽略粗糙的邏輯思路)

    for i in range(2, 8):

    minnum = sht.cell(i,1).value

    if sht.cell(i, 2).value < minnum:

    minnum = sht.cell(i,2).value

    if sht.cell(i,3).value < minnum:

    minnum = sht.cell(i,3).value

    if sht.cell(i, 4).value < minnum:

    minnum = sht.cell(i, 4).value

    k = 0

    for j in range(1, 5):

    if sht.cell(i, j).value > minnum:

    k += 1

    sht.cell(i, k+5).value = sht.cell(i, j).value

    print(sht.cell(i, k+5).value, end=" ")

    print()

    4、儲存檔案:

    執行後透過print程式碼在終端顯示了結果:

    開啟表格,資料已經完成了填入:

    總結:

    總的來說,用openpyxl庫讓python處理excel還是比較容易的,符合python容易上手的特點,讓大家把精力多放在問題解決思路上,而不是浪費在學習程式碼寫法規則上。

  • 中秋節和大豐收的關聯?
  • 雞肉火鍋做法?