前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python使用xlwt和xlrd读写excel文件

Python使用xlwt和xlrd读写excel文件

作者头像
Python碎片公众号
发布2021-02-26 14:32:47
1.3K0
发布2021-02-26 14:32:47
举报

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文件数据了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档