1. 程式人生 > >【Python】xlwt和xlrd模組寫入和讀取.xls版本EXCEL

【Python】xlwt和xlrd模組寫入和讀取.xls版本EXCEL

我們經常與EXCEL打交道,其實我們可以使用python的相應模組去處理EXCEL檔案。2003以前的表格以.xls字尾,用xlwt來寫表格,用xlrd來讀取表格;搭配xlutils修改表格。2007的表格以.xlsx字尾,用openpyxl來讀寫表格。

def dict_to_list2():
    class_list = []                                               #1.建立一個空的二維列表
    for item in class_dict.items():                               #2.獲取字典型別資料的字典項(dict-->tuple)
        a = item[1]                                               #3.獲取元組的資料集合(tuple-->str,list)
        print("item[1]的資料型別:", type(a), a)                   #4.檢視元組的資料的型別
        for list in a:                                            #5.分別獲取元組的資料(str-->str,list-->dict)
            rows=[]
            for info in list:
                if info == 'courseName'or info == 'audioname' or info == 'pdfFileId' or info == 'learnStatus':
                    rows.append(list[info])                  #6.獲取字典型別資料的value存入到一維列表(dict-->str-->list)
            if rows:                                          # 如果列表不為空
                class_list.append(rows)                       # 二維列表存入資料
    return(class_list)


def writeExcel(file_path,class_list):
    wb = xlwt.Workbook()                          # 開啟一個空白excel
    sheet = wb.add_sheet("sample")                # 新增一個sheet名叫sample

    for i in range(len(class_list)):
        print(class_list[i][0])
        print(class_list[i][1])
        print(class_list[i][2])
        print(class_list[i][3])
        sheet.write(i,0,class_list[i][0])        # 第i行第一列
        sheet.write(i,1, class_list[i][1])       # 第i行第二列
        sheet.write(i,2, class_list[i][2])       # 第i行第二列
        sheet.write(i,3, class_list[i][3])       # 第i行第二列

    wb.save(file_path)
    print("寫入表格成功!!!")

if __name__ == '__main__':
    class_list2 = dict_to_list2()
    writeExcel("F:\SoftwareTest\sample.xls", class_list2)

以上是寫入到excel的情況,下面主要介紹一下如何讀取excel的資訊。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#部落格:https://blog.csdn.net/sinat_37967865
#檔案:handelExcel.py
#日期:2018-10-21
#備註:pip install xlwt, pip install xlrd, pip install xlutils,pip install openpyxl
#模組分類:2003以前的表格以.xls字尾,用xlwt來寫表格,用xlrd來讀取表格;搭配xlutils修改表格
          2007的表格以.xlsx字尾,用openpyxl來讀寫表格。  
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

import os
# 讀寫.xls結尾的03-07版本EXCEL
import xlrd
import xlwt
from xlutils.copy import copy

# 讀寫.xlsx結尾的07版本EXCEL
import openpyxl

def readExcel(folder):
    # 獲取指定目錄下面的所有檔案
    files = os.listdir(folder)
    # 獲取xls型別的檔案放到一個列表裡面
    xlsFiles = [f for f in files if f.endswith(".xls")]
    for xlsFile in xlsFiles:
        print(xlsFile)                               # 列印目標路徑下所有檔案
        os.chdir(folder)                             # 切換到操作目錄
        print("目錄地址為:" + os.getcwd())           # 列印當前目錄
        data = xlrd.open_workbook(xlsFile)           # 開啟excle文件讀取資料
        table = data.sheets()[0]                     # 通過索引順序獲取
        table2 = data.sheet_by_index(0)              # 通過索引順序獲取
        table3 = data.sheet_by_name('sample')        # 通過名稱獲取   
        nrows = table.nrows                          # 獲取行數
        ncols = table.ncols                          # 獲取列數

        print(xlsFile,"檔案行數:",nrows)
        print(xlsFile,"檔案列數:",ncols)


        # 獲取具體單元格資料獲取
        cell_A1 = table.cell(0, 0).value
        cell_C4 = table.cell(2, 3).value
        # print(cell_A1,cell_C4)

        # 使用行和列進行索引查詢
        cell_A1 = table.row(0)[0].value
        cell_A2 = table.col(1)[0].value
        # print(cell_A1, cell_A2)

        # 資料型別判斷
        ctype1 = table.cell(1, 1).ctype     # 第一行第1列資料型別
        ctype2 = table.cell(1, 2).ctype    # 第一行第2列資料型別
        print('資料型別:0-empty,1-string, 2-number, 3-date, 4-boolean, 5-error',ctype1,ctype2)

        for i in range(nrows):
            className = table.cell_value(i, 0)
            filename = table.cell_value(i, 1)
            print(className,filename)

if __name__ == '__main__':
    readExcel("F:\SoftwareTest")

以上是讀取到EXCEL到控制檯的截圖。