Python使用xlwt和xlrd读写excel文件

2021-02-26 14:32:47 浏览数 (2)

xlwt和xlrd是两个相互配套的模块,在Python中,用于将数据写入Excel文件和读取Excel文件的数据。

从字面即可看出xlwt是对xls格式的文件进行write,xlrd是对xls格式的文件进行read。

xlwt可以实现指定表单、指定单元格的写入。在写入的时候,xlwt写的过程就是一个单元格一个单元格的写。

一、安装xlwt和xlrd

代码语言:javascript复制
pip install xlwt
pip install xlrd

二、使用xlwt将数据写入excel文件

代码语言:javascript复制
import xlwt


xlwt_data = [
    ('有', '人', '云', '淡', '风', '轻'),
    ('有', '人', '负', '重', '前', '行'),
    ('p', 'y', 't', 'h', 'o', 'n')
]
output_file_name = 'xlwt_file.xls'


def save_excel(target_list, output_file_name):
    """
    将数据写入xls文件
    """
    if not output_file_name.endswith('.xls'):
        output_file_name  = '.xls'
    workbook = xlwt.Workbook(encoding='utf-8')
    ws = workbook.add_sheet("sheet1")
    title_data = ('a', 'b', 'c', 'd', 'e', 'f')
    target_list.insert(0, title_data)
    rows = len(target_list)
    lines = len(target_list[0])
    for i in range(rows):
        for j in range(lines):
            ws.write(i, j, target_list[i][j])
    workbook.save(output_file_name)


save_excel(xlwt_data, output_file_name)

代码描述:

1.我们先将需要保存的数据解析好,保存成固定的数据类型(一个由元组或列表构成的列表)。

2.我们将保存数据到excel文件的代码封装成一个函数,方便重用。

主要步骤为:

(1).创建一个xlwt.Workbook()对象,也就是创建一个表格对象

(2).使用add_sheet()方法创建或打开一张表(sheet)

(3).将数据一个单元格一个单元格的依次写入到表中

(4).保存文件,指定自己想保存成的文件名字

运行结果:

上面的代码执行后,会在代码同级目录下创建一个名字为xlwt_file.xls的excel文件,并写入xlwt_data的数据,使用excel打开结果如下:

三、使用xlrd读取excel文件数据

xlrd可以实现指定表格、指定单元格的读取。在读取的时候,xlrd可以按行、按列读,也可以一个单元格一个单元格的依次读取。

代码语言:javascript复制
import xlrd


input_file_name = 'xlwt_file.xls'


def read_excel(input_file_name):
    """
    从xls文件中读取数据
    """
    workbook = xlrd.open_workbook(input_file_name)
    print(workbook)
    # 可以使用workbook对象的sheet_names()方法获取到excel文件中哪些表有数据
    print(workbook.sheet_names())
    # 可以通过sheet_by_index()方法或sheet_by_name()方法获取到一张表,返回一个对象
    # table = workbook.sheet_by_index(0)
    # print(table)
    table = workbook.sheet_by_name('sheet1')
    print(table)
    # 通过nrows和ncols获取到表格中数据的行数和列数
    rows = table.nrows
    cols = table.ncols
    # 可以通过row.values()按行获取数据,返回一个列表,也可以按列
    for row in range(rows):
        row_data = table.row_values(row)
        print(''.join(row_data))
    # 也可以根据单元格获取每一个单元格的数据
    for row in range(rows):
        for col in range(cols):
            data = table.cell(row, col).value
            print(data, end=' ')


read_excel(input_file_name)

代码描述:

1.通过xlrd的open_workbook()方法打开一个xls文件,返回一个workbook对象,这个对象是一个Book对象,即文件对象。

2.通过文件对象workbook的sheet_names()方法可以获取文件中所有有数据的表名,返回一个表名构成的列表。

3.通过文件对象workbook的sheet_by_id()方法或sheet_by_name()方法可以打开指定的表,返回一个表格对象table。

4.通过表格对象table的nrows属性和ncols属性,可以获取到表格的行数和列数。

5.获取到表格的行数和列数后,就可以用row_values()方法或col_values()方法来按行或按列来获取表格中的数据了。

6.也可以使用cell().value指定单元格的行和列来读取指定单元格的值。

运行结果:

代码语言:javascript复制
<xlrd.book.Book object at 0x000002733656D0F0>
['sheet1']
<xlrd.sheet.Sheet object at 0x0000027336BE5BE0>
abcdef
有人云淡风轻
有人负重前行
python
a b c d e f 有 人 云 淡 风 轻 有 人 负 重 前 行 p y t h o n 

现在,我们可以很方便的使用xlwt和xlrd来写入和读取xls格式的excel文件数据了。

0 人点赞