Python与excel交互(xlwt库和openpyxl库的使用)
xlw库介绍
xlwt是用于在Python中操作Excel文件的第三方库,主要用于创建和写入Excel文件(xls格式)。
使用xlwt可以方便地设置单元格的样式,像设置字体(如字体大小、颜色等)、对齐方式(水平和垂直对齐)和边框等。还能灵活控制工作表的行高和列宽,以满足不同数据展示的需求。在数据写入方面,可以向单元格写入文本、数字等各种类型的数据,也可以把整个列表或者数组的数据批量写入工作表。
xlw库使用
- 创建一个新的工作簿
workbook = xlwt.Workbook()
- 添加一个工作表
worksheet = workbook.add_sheet('Sheet1')
- 保存工作簿
workbook.save('example.xls')
- 写入数据到单元格 (行row, 列col, 数据label)
worksheet.write(0, 0, 'Hello')
- 创建一个样式
style = xlwt.XFStyle()
- 设置字体
font = xlwt.Font() font.name = 'Times New Roman' font.bold =
True style.font = font
- 写入数据到单元格并应用样式
worksheet.write(0, 0, 'Hello', style)
worksheet.write(0, 1, 'World', style)
- 合并单元格 (开始行firstrow, 结束行lastrow, 开始列firstcol, 结束列lastcol,数据label)
worksheet.write_merge(0, 1, 0, 1, 'MergedCells')
- 设置列宽 (列索引, 宽度)
worksheet.col(0).width = 256 * 20 # 20个字符宽度
- 设置行高 (行索引, 高度)
worksheet.row(0).height_mismatch = True
worksheet.row(0).height = 20 * 20 # 20个点高度
注意事项 xlwt只能创建.xls格式的文件,不支持.xlsx格式。如果你需要创建.xlsx文件,可以使用openpyxl库。
xlwt不支持读取Excel文件,只支持写入。如果你需要读取Excel文件,可以使用xlrd库。
Openpyxl库介绍
openpyxl是一个用于读写Excel文件( .xlsx 、 .xlsm 、 .xltx 、 .xltm )的Python库。
它可以创建新的Excel文档,也能读取和修改已有的文档。
在操作Excel文件的单元格、行和列方面功能强大。可以方便地访问单元格的值,设置单元格的格式,如字体、颜色、对齐方式等。而且还支持对工作表进行插入、删除行列等操作。
Openpyxl库常用操作
官方使用教程文档
- Openpyxl导入
from openpyxl import Workbook
- 创建一个新的工作簿
wb = Workbook()
- 获取默认的工作表
ws = wb.active
- 保存工作簿
wb.save("example.xlsx")
- 打开一个现有的工作簿
from openpyxl import load_workbook
wb = load_workbook("example.xlsx")
- 获取默认的工作表
ws = wb.active
- 创建一个新的工作表
ws1 = wb.create_sheet("Sheet1")
- 选择一个现有的工作表
ws2 = wb["Sheet1"]
- 写入单个单元格
ws['A1'] = 42
- 写入一行数据
ws.append([1, 2, 3, 4, 5])
- 写入多行数据
data = [
['Name', 'Age', 'City'],
['Alice', 30, 'New York'],
['Bob', 25, 'Los Angeles']
]
for row in data:
ws.append(row)
- 读取单个单元格
value = ws['A1'].value
- 读取一行数据
row_data = [cell.value for cell in ws[1]]
- 读取多行数据
for row in ws.iter_rows(min_row=2, max_row=3, min_col=1, max_col=3):
row_data = [cell.value for cell in row]
print(row_data)
- 合并单元格
ws.merge_cells('A1:C1')
- 拆分单元格
ws.unmerge_cells('A1:C1')
from openpyxl.styles import Font, Color, PatternFill, Border, Side, Alignment
- 设置字体
ws['A1'].font = Font(name='Calibri', size=12, bold=True, italic=True, color='FF0000')
- 设置填充
ws['A1'].fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')
- 设置边框
border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
ws['A1'].border = border
- 设置对齐方式
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')
- 插入行
ws.insert_rows(2)
- 插入列
ws.insert_cols(2)
- 删除行
ws.delete_rows(2)
- 删除列
ws.delete_cols(2)
- 保存工作簿
wb.save("example.xlsx")
Openpyxl高级使用
1.处理公式
# 写入公式
ws['A1'] = "=SUM(B1:B10)"
# 读取公式
formula = ws['A1'].value
2.处理图表
from openpyxl.chart import BarChart, Reference
# 创建数据
ws.append(['Category', 'Value'])
ws.append(['A', 10])
ws.append(['B', 20])
ws.append(['C', 30])
# 创建图表
chart = BarChart()
data = Reference(ws, min_col=2, min_row=1, max_row=4, max_col=2)
categories = Reference(ws, min_col=1, min_row=2, max_row=4)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
# 添加图表到工作表
ws.add_chart(chart, "E5")
3.处理日期
from datetime import datetime
# 写入日期
ws['A1'] = datetime.now()
# 读取日期
date_value = ws['A1'].value
╰( ̄ω ̄o)蟹蟹观看╰( ̄ω ̄o)
作者:予安灵