Python使用xlwt和xlrd操作Excel文件详解

南乔
南乔
发布时间:2026-10-15| 4人浏览过
原创

本文详细介绍如何利用Python的xlwt和xlrd库进行Excel文件的读写操作。涵盖读取现有Excel数据、创建工作簿与表单、写入单元格数据以及设置字体、对齐、边框等单元格样式的方法。通过具体代码示例,展示如何处理日期格式、调整行列宽高及保存文件,帮助开发者实现日常办公中的Excel自动化处理。

工具

python3.7

Pycharm

Excel

xlwt&xlrd

读取Excel文件内容

假设当前目录下存在一个名为“股票数据.xlsx”的Excel文件,我们可以按照以下代码逻辑来读取并处理该文件中的数据。

import xlrd

# 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿)
wb = xlrd.open_workbook('股票数据.xlsx')
# 通过Book对象的sheet_names方法可以获取所有表单名称
sheetname = wb.sheet_names()[0]
# 通过指定的表单名称获取Sheet对象(工作表)
sheet = wb.sheet_by_name(sheetname)
# 通过Sheet对象的nrows和ncols属性获取表单的行数和列数
print(sheet.nrows, sheet.ncols)
for row in range(sheet.nrows):
    for col in range(sheet.ncols):
        # 通过Sheet对象的cell方法获取指定Cell对象(单元格)
        # 通过Cell对象的value属性获取单元格中的值
        value = sheet.cell(row, col).value
        # 对除首行外的其他行进行数据格式化处理
        if row > 0:
            # 第1列的xldate类型先转成元组再格式化为“年月日”的格式
            if col == 0:
                # xldate_as_tuple函数的第二个参数只有0和1两个取值
                # 其中0代表以1900-01-01为基准的日期,1代表以1904-01-01为基准的日期
                value = xlrd.xldate_as_tuple(value, 0)
                value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日'
            # 其他列的number类型处理成小数点后保留两位有效数字的浮点数
            else:
                value = f'{value:.2f}'
        print(value, end='\t')
    print()
# 获取最后一个单元格的数据类型
# 0 - 空值,1 - 字符串,2 - 数字,3 - 日期,4 - 布尔,5 - 错误
last_cell_type = sheet.cell_type(sheet.nrows - 1, sheet.ncols - 1)
print(last_cell_type)
# 获取第一行的值(列表)
print(sheet.row_values(0))
# 获取指定行指定列范围的数据(列表)
# 第一个参数代表行索引,第二个和第三个参数代表列的开始(含)和结束(不含)索引
print(sheet.row_slice(3, 0, 5))

写入Excel文件内容

利用Excel文件写入功能,可以通过导入xlwt模块中的Workbook类来实例化一个工作簿对象。随后,调用该工作簿对象的add_sheet方法以添加新的工作表。接着,使用工作表对象提供的write方法,即可向指定的单元格写入具体数据。完成所有数据录入后,最后调用工作簿对象的save方法,将构建好的工作簿保存至指定的文件路径或内存中。下面的代码演示了如何生成并写入一份学员成绩表。

import random

import xlwt

student_names = ['关羽', '张飞', '赵云', '马超', '黄忠']
scores = [[random.randint(40, 100) for _ in range(3)] for _ in range(5)]
# 创建工作簿对象(Workbook)
wb = xlwt.Workbook()
# 创建工作表对象(Worksheet)
sheet = wb.add_sheet('一年级二班')
# 添加表头数据
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):
    sheet.write(0, index, title)
# 将学生姓名和考试成绩写入单元格
for row in range(len(scores)):
    sheet.write(row + 1, 0, student_names[row])
    for col in range(len(scores[row])):
        sheet.write(row + 1, col + 1, scores[row][col])
# 保存Excel工作簿
wb.save('考试成绩表.xlsx')

Excel文件样式调整

此外,还可以利用XFStyle对象来精细化设置单元格的显示样式。这主要涉及对字体(Font)、对齐方式(Alignment)、边框(Border)以及背景色(Background)等属性的配置,以提升表格的可读性和美观度。

header_style = xlwt.XFStyle()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 0 - 黑色、1 - 白色、2 - 红色、3 - 绿色、4 - 蓝色、5 - 黄色、6 - 粉色、7 - 青色
pattern.pattern_fore_colour = 5
header_style.pattern = pattern
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):
    sheet.write(0, index, title, header_style)

设置表头的位置

align = xlwt.Alignment()
# 垂直方向的对齐方式
align.vert = xlwt.Alignment.VERT_CENTER
# 水平方向的对齐方式
align.horz = xlwt.Alignment.HORZ_CENTER
header_style.alignment = align

设置单元格的宽高

# 设置行高为40px
sheet.row(0).set_style(xlwt.easyxf(f'font:height {20 * 40}'))
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):
    # 设置列宽为200px
    sheet.col(index).width = 20 * 200
    # 设置单元格的数据和样式
    sheet.write(0, index, title, header_style)

总结

除了上述提到的方法,市面上还有其他操作Excel文件的第三方库(例如openpyxl),读者可根据实际需求自行探索。掌握Python程序操作Excel的技巧,能够有效解决日常办公中大量繁琐的电子表格处理任务,典型的应用场景包括将多个格式相同的Excel文件合并为一个,以及从多个Excel文件或不同的表单中提取特定数据。当然,若涉及更复杂的数据清洗与分析,使用Python数据分析的核心库pandas可能会更加便捷,因为其封装的函数及DataFrame类能够胜任绝大多数数据处理工作。

至此,关于Python自动操作Excel文件的方法详解已介绍完毕。如需了解更多Python操作Excel的相关内容,欢迎搜索本站历史文章或继续阅读后续相关文章,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。