Python xlwt库访问工作表完整教程 | Python Excel操作指南
- Python
- 2025-07-24
- 1378
Python xlwt库访问工作表完全指南
掌握Excel工作表创建、访问和操作的实用技巧
xlwt库简介
xlwt是一个用于创建和写入Microsoft Excel文件的Python库,特别适合处理.xls格式的文件(Excel 97-2003格式)。
主要特点:
- 支持创建工作表、写入数据和设置格式
- 简单易用的API,学习曲线平缓
- 不需要安装Excel即可使用
- 跨平台兼容性(Windows、Linux、macOS)
注意: xlwt仅支持创建和写入Excel文件,不支持读取或修改现有文件。对于读取操作,可以考虑使用xlrd库。
安装xlwt库
使用pip命令安装xlwt非常简单:
pip install xlwt
验证安装:
import xlwt print(xlwt.__version__) # 输出安装的xlwt版本
创建工作簿和工作表
使用xlwt创建Excel文件的第一步是创建工作簿(Workbook)对象:
import xlwt # 创建Workbook对象 workbook = xlwt.Workbook(encoding='utf-8')
添加工作表使用add_sheet()方法:
# 添加一个名为"员工数据"的工作表
sheet1 = workbook.add_sheet('员工数据')
# 添加第二个工作表
sheet2 = workbook.add_sheet('部门统计')
每个工作表都是一个独立的Sheet对象,可以分别进行操作。
访问工作表的方法
在xlwt中,访问工作表主要有两种方式:
1. 创建时保存引用
在创建工作表时保存返回的Sheet对象:
# 创建时保存引用
employee_sheet = workbook.add_sheet('员工信息')
department_sheet = workbook.add_sheet('部门信息')
# 后续使用保存的引用访问
employee_sheet.write(0, 0, '姓名')
department_sheet.write(0, 0, '部门名称')
2. 通过工作表名称访问
虽然xlwt没有直接提供按名称访问的方法,但可以通过以下方式实现:
# 创建多个工作表
workbook.add_sheet('销售数据')
workbook.add_sheet('库存数据')
# 通过名称访问特定工作表
def get_sheet_by_name(workbook, sheet_name):
for i in range(workbook._Workbook__worksheets.__len__()):
sheet = workbook._Workbook__worksheets[i]
if sheet.name == sheet_name:
return sheet
return None
# 获取"销售数据"工作表
sales_sheet = get_sheet_by_name(workbook, '销售数据')
if sales_sheet:
sales_sheet.write(0, 0, '产品名称')
最佳实践: 建议在创建工作表时保存引用,特别是当工作表数量不多时,这样代码更简洁高效。
向工作表写入数据
使用write()方法向工作表写入数据:
# 基本写入操作 sheet.write(row, col, value) # 示例:在A1单元格写入标题 sheet.write(0, 0, '员工信息表') # 在B2单元格写入数字 sheet.write(1, 1, 42) # 在C3单元格写入浮点数 sheet.write(2, 2, 3.14159) # 在D4单元格写入日期 import datetime sheet.write(3, 3, datetime.datetime.now())
批量写入数据示例:
# 表头
headers = ['ID', '姓名', '部门', '工资']
for col, header in enumerate(headers):
sheet.write(0, col, header)
# 示例数据
employees = [
[1, '张三', '技术部', 12000],
[2, '李四', '市场部', 9800],
[3, '王五', '财务部', 11500],
]
# 写入数据行
for row, employee in enumerate(employees, start=1):
for col, value in enumerate(employee):
sheet.write(row, col, value)
设置单元格样式
xlwt允许通过XFStyle对象自定义单元格样式:
# 创建样式对象 style = xlwt.XFStyle() # 设置字体 font = xlwt.Font() font.name = '微软雅黑' font.bold = True font.height = 280 # 14pt * 20 style.font = font # 设置背景颜色 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = xlwt.Style.colour_map['yellow'] style.pattern = pattern # 设置边框 borders = xlwt.Borders() borders.left = xlwt.Borders.THIN borders.right = xlwt.Borders.THIN borders.top = xlwt.Borders.THIN borders.bottom = xlwt.Borders.THIN style.borders = borders # 应用样式 sheet.write(0, 0, '带样式的标题', style)
常用样式设置速查:
| 样式类型 | 属性 | 常用值 |
|---|---|---|
| 字体 | bold, italic, underline | True/False |
| 对齐 | alignment.horz | xlwt.Alignment.HORZ_CENTER |
| 边框 | borders.left/right/top/bottom | xlwt.Borders.THIN/MEDIUM/THICK |
| 背景色 | pattern.pattern_fore_colour | xlwt.Style.colour_map中的颜色名 |
多工作表操作
实际应用中经常需要操作多个工作表:
# 创建多个工作表
summary_sheet = workbook.add_sheet('汇总')
details_sheet = workbook.add_sheet('明细')
# 在汇总表写入标题
summary_sheet.write(0, 0, '部门月度汇总表')
# 在明细表写入标题
details_sheet.write(0, 0, '详细交易记录')
# 在多个工作表之间共享数据
departments = ['技术部', '市场部', '财务部', '人力资源部']
# 写入汇总表
for i, dept in enumerate(departments):
summary_sheet.write(i+1, 0, dept)
summary_sheet.write(i+1, 1, 0) # 初始化为0
# 写入明细表
details_sheet.write(1, 0, '2023-06-01')
details_sheet.write(1, 1, '技术部')
details_sheet.write(1, 2, 15000)
保存Excel文件
完成所有操作后,使用save()方法保存工作簿:
# 保存为.xls文件
workbook.save('公司数据.xls')
完整示例:
import xlwt
import datetime
# 创建工作簿
workbook = xlwt.Workbook(encoding='utf-8')
# 添加工作表
employee_sheet = workbook.add_sheet('员工信息')
department_sheet = workbook.add_sheet('部门信息')
# 设置日期格式
date_style = xlwt.XFStyle()
date_style.num_format_str = 'YYYY-MM-DD'
# 向员工表写入数据
headers = ['ID', '姓名', '入职日期', '工资']
for col, header in enumerate(headers):
employee_sheet.write(0, col, header, xlwt.easyxf('font: bold on'))
employees = [
[1, '张三', datetime.date(2020, 5, 15), 15000],
[2, '李四', datetime.date(2019, 8, 22), 13800],
[3, '王五', datetime.date(2021, 3, 10), 12500],
]
for row, emp in enumerate(employees, start=1):
for col, value in enumerate(emp):
if isinstance(value, datetime.date):
employee_sheet.write(row, col, value, date_style)
else:
employee_sheet.write(row, col, value)
# 向部门表写入数据
department_sheet.write(0, 0, '部门ID')
department_sheet.write(0, 1, '部门名称')
department_sheet.write(1, 0, 101)
department_sheet.write(1, 1, '技术研发部')
department_sheet.write(2, 0, 102)
department_sheet.write(2, 1, '市场运营部')
# 保存文件
workbook.save('company_data.xls')
print("Excel文件已成功生成!")
xlwt的局限性
虽然xlwt非常实用,但也有一些限制需要注意:
- 仅支持.xls格式(Excel 97-2003),不支持.xlsx
- 最大行数限制为65536行,最大列数限制为256列
- 无法读取或修改现有Excel文件
- 不支持Excel的某些高级功能(如图表、数据透视表等)
替代方案: 如果需要处理.xlsx文件或需要更多功能,可以考虑以下库:
- openpyxl - 读写.xlsx文件
- xlsxwriter - 创建.xlsx文件(功能丰富)
- pandas - 高级数据处理,内置Excel读写功能
总结
本教程详细介绍了如何使用Python的xlwt库访问和操作Excel工作表,包括:
- 创建和访问工作表的多种方法
- 向工作表写入不同类型的数据
- 设置单元格样式以美化输出
- 多工作表操作技巧
- 保存最终Excel文件
xlwt是处理.xls格式文件的强大工具,虽然有一些限制,但对于基本的Excel文件生成需求来说,它仍然是一个简单高效的选择。
本文由DuanmuZhen于2025-07-24发表在吾爱品聚,如有疑问,请联系我们。
本文链接:http://521pj.cn/20256349.html
发表评论