【Python】xlwt和xlrd模块写入和读取.xls版本EXCEL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_37967865/article/details/84201219

我们经常与EXCEL打交道,其实我们可以使用python的相应模块去处理EXCEL文件。2003以前的表格以.xls后缀,用xlwt来写表格,用xlrd来读取表格;搭配xlutils修改表格。2007的表格以.xlsx后缀,用openpyxl来读写表格。

以下是具体代码,已有相应注释,接上篇文章“字典dict类型转换为列表list类型”:

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到控制台的截图。

猜你喜欢

转载自blog.csdn.net/sinat_37967865/article/details/84201219