xlwings 数据类型和转换:Python 与 Excel 的桥梁
在使用 xlwings 进行 Python 和 Excel 数据交互时,理解两者之间的数据类型对应关系至关重要。本篇将详细介绍 Python 数据类型与 Excel 数据类型的对应关系,以及如何进行数据类型转换。
一、Python 数据类型与 Excel 数据类型的对应关系
Python 数据类型 | Excel 数据类型 | 说明 |
---|---|---|
int | 数字 | 整数 |
float | 数字 | 浮点数 |
str | 文本 | 字符串 |
bool | 逻辑值 | 布尔值 (True /False ) |
datetime.datetime | 日期时间 | 日期和时间 |
datetime.date | 日期 | 仅日期 |
datetime.time | 时间 | 仅时间 |
None | 空值 | 空单元格 |
二、数据类型转换
1. 自动类型转换
xlwings 在大多数情况下会自动处理 Python 和 Excel 之间的数据类型转换。例如:
python">import xlwings as xw# 打开工作簿
wb = xw.Book('data.xlsx')# 获取工作表
sheet = wb.sheets['Sheet1']# 写入不同类型的数据
sheet.range('A1').value = 123 # 整数
sheet.range('A2').value = 3.14 # 浮点数
sheet.range('A3').value = 'Hello' # 字符串
sheet.range('A4').value = True # 布尔值
sheet.range('A5').value = None # 空值# 读取数据
print(sheet.range('A1').value) # 123
print(sheet.range('A2').value) # 3.14
print(sheet.range('A3').value) # Hello
print(sheet.range('A4').value) # True
print(sheet.range('A5').value) # None
2. 手动类型转换
在某些情况下,你可能需要手动进行数据类型转换。例如:
-
将 Excel 日期时间转换为 Python
datetime
对象:
python">import xlwings as xw
from datetime import datetime# 打开工作簿
wb = xw.Book('data.xlsx')# 获取工作表
sheet = wb.sheets['Sheet1']# 读取 Excel 日期时间
excel_date = sheet.range('A1').value# 转换为 Python datetime 对象
python_date = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(excel_date) - 2)
print(python_date)
-
将 Python
datetime
对象转换为 Excel 日期时间:
python">import xlwings as xw
from datetime import datetime# 打开工作簿
wb = xw.Book('data.xlsx')# 获取工作表
sheet = wb.sheets['Sheet1']# 创建 Python datetime 对象
python_date = datetime.now()# 转换为 Excel 日期时间
excel_date = (python_date - datetime(1900, 1, 1)).days + 2# 写入 Excel
sheet.range('A1').value = excel_date
三、注意事项
-
Excel 的日期系统从 1900 年 1 月 1 日开始,而 Python 的
datetime
模块使用 1970 年 1 月 1 日作为起点。因此,在进行日期时间转换时需要进行相应的调整。 -
Excel 中的空值在 Python 中表示为
None
,而 Python 中的None
在 Excel 中表示为空单元格。 -
如果 Excel 单元格包含公式,xlwings 会返回公式计算的结果,而不是公式本身。