以此表格为例:
获取活动工作表区域
import xlwings as xw
app = xw.apps.active # 获取活动APP
book = app.books.active # 活动工作薄
sheet = book.sheets.active # 活动工作表
rng: xw.Range = sheet.used_range # 获取数据区域
print(rng.address) # 显示单元格引用
输出:
$A$1:$C$5
获取数据列表:
使用xlwings.Range.value获取二维列表数据,如下:
print(rng.value)
输出:
[['姓名', '性别', '年龄'], ['刘备', '男', 18.0], ['张飞', '男', 17.0], ['关羽', '男', 17.0], ['孙尚香', '女', 16.0]]
数据转置
print(rng.options(transpose=True).value) # 设置 transpose=True
输出:
[['姓名', '刘备', '张飞', '关羽', '孙尚香'], ['性别', '男', '男', '男', '女'], ['年龄', 18.0, 17.0, 17.0, 16.0]]
获取数据到pandas.DataFrame
代码如下,其中:convert参数指定为pandas.DataFrame, header参数说明表格中是否包含行标题, index参数用来说明表格中是否包含列标题(若无,pandas.DataFrame将分配默认的列标题)。
import pandas as pd
df: pd.DataFrame = rng.options(convert=pd.DataFrame, header=True, index=False).value
print(df)
输出:
姓名 性别 年龄
0 刘备 男 18.0
1 张飞 男 17.0
2 关羽 男 17.0
3 孙尚香 女 16.0
可以修改header参数和index参数尝试读取结果。
End