Python 模塊之 pyexcel_xls


一、適用場景

在很多數據統計或者數據分析的場景中,我們都會使用到excel;

在一些系統中我們也會使用excel作為數據導入和導出的方式,那么如何使用python加以輔助我們快速進行excel數據做更多復雜和精確的處理,下面通過pyexcel_xls模塊進行。

二、模塊概述

pyexcel-xls 以 OrderedDict 結構處理數據,將整個excel文件轉化為一個OrderedDict (有序字典)結構:

每個key就是一個子表(Sheet);

每個子表(Sheet),轉化為一個列表結構:很像二維數組,第一層列表為行(Row),行的下標為列(Column),對應的值為單元格的值;

編碼為 unicode,如果有中文必須進行轉換。

三、讀excel數據(xls,xlsx)

3.1 先創建一個excle文件,readfile.xls,里面有如下數據:

3.2 下面看如何讀取這個文件:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
___Author___ = "Alfred Xue"
___Date_____ = "2017/11/8 上午10:08"

# pyexcel_xls 以 OrderedDict 結構處理數據
from collections import OrderedDict
from pyexcel_xls import save_data
from pyexcel_xls import get_data


def read_xls_file():
    data = get_data(r"data/readfile.xls")
    print("數據格式:" type(data))
    for sheet_n in data.keys():
        print(sheet_n, ":", data[sheet_n])

if __name__ == "__main__":
    read_xls_file()

輸出結構:

數據格式: <class 'collections.OrderedDict'>
Sheet1 : [['ID', '用戶名', '密碼', '角色'], ['00001', 'Alfred', 'adfaoiqjofj', '管理員'], ['00002', 'Jack', ';kndfiqoe', '用戶'], [], [], [], [], [], [], [], []]

Process finished with exit code 0

可以看到:

整個excel文件,轉化為一個OrderedDict (有序字典)結構:每個key就是一個子表(Sheet)。

每個子表(Sheet),轉化為一個列表結構:很像二維數組,第一層列表為行(Row),行的下標為列(Column),對應的值為單元格的值。

編碼為 unicode 簡單,易用,讀出數據后,非常適合做二次處理!

■ 注意,excel文件名(就是那個xls或者xlsx文件),盡量不要用中文,如果您要使用中文,請轉化為unicode編碼,如:

data = get_data(unicode(r"D:\試試.xlsx", "utf-8"))

四、寫excel數據(xls)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
___Author___ = "Alfred Xue"
___Date_____ = "2017/11/9 下午3:57"

# pyexcel_xls 以 OrderedDict 結構處理數據
from collections import OrderedDict

from pyexcel_xls import get_data
from pyexcel_xls import save_data


# 寫Excel數據, xls格式
def save_xls_file():
    data = OrderedDict()
    # sheet表的數據
    sheet_1 = []
    row_1_data = ["ID", "序號", "等級"]  # 每一行的數據
    row_2_data = [4, 5, 6]
    # 逐條添加數據
    sheet_1.append(row_1_data)
    sheet_1.append(row_2_data)
    # 添加sheet表
    data.update({"Sheet1": sheet_1})

    # 保存成xls文件
    save_data("data/writefile.xls", data)


if __name__ == '__main__':
    save_xls_file()

生成excel文件效果:

 


免責聲明!

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



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