# 语法概述
xlwings对象模型与VBA使用的模型非常相似。
下面所有代码示例取决于以下导入:
~~~
>>> import xlwings as xw
~~~
## 活动对象
~~~
# 活动应用程序(即Excel实例)
>>> app = xw.apps.active
# 活动工作簿
>>> wb = xw.books.active # 在活动app
>>> wb = app.books.active # 在特定app
# 活动工作表
>>> sht = xw.sheets.active # 在活动工作簿
>>> sht = wb.sheets.active # 在特定工作簿
# 活动工作表的Range
>>> xw.Range('A1') #在活动应用程序的活动工作簿的活动表上
~~~
可以使用A1表示法,Excel的基于1的索引的元组,命名范围或两个Range对象来实例化范围:
~~~
xw.Range('A1')
xw.Range('A1:C3')
xw.Range((1,1))
xw.Range((1,1), (3,3))
xw.Range('NamedRange')
xw.Range(xw.Range('A1'), xw.Range('B2'))
~~~
## Full qualification
圆括号遵循Excel的行为(即基于1的索引),而方括号使用Python的基于0的索引/切片。 例如,以下表达式都引用相同的范围:
~~~
xw.apps[763].books[0].sheets[0].range('A1')
xw.apps(10559).books(1).sheets(1).range('A1')
xw.apps[763].books['Book1'].sheets['Sheet1'].range('A1')
xw.apps(10559).books('Book1').sheets('Sheet1').range('A1')
~~~
请注意,apps键与您不同,因为它们是进程ID(PID)。 您可以通过`xw.apps.keys()`获取PID列表.
## Range索引/切片
Range对象支持索引和切片,例如:
~~~
>>> rng = xw.Book().sheets[0].range('A1:D5')
>>> rng[0, 0]
<Range [Workbook1]Sheet1!$A$1>
>>> rng[1]
<Range [Workbook1]Sheet1!$B$1>
>>> rng[:, 3:]
<Range [Workbook1]Sheet1!$D$1:$D$5>
>>> rng[1:3, 1:3]
<Range [Workbook1]Sheet1!$B$2:$C$3>
~~~
## Range Shortcuts
工作表对象通过在工作表对象上使用索引/切片表示法为范围对象提供快捷方式。 这将根据您是否传递字符串或索引/切片来评估`sheet.range`或`sheet.cells`:
~~~
>>> sht = xw.Book().sheets['Sheet1']
>>> sht['A1']
<Range [Book1]Sheet1!$A$1>
>>> sht['A1:B5']
<Range [Book1]Sheet1!$A$1:$B$5>
>>> sht[0, 1]
<Range [Book1]Sheet1!$B$1>
>>> sht[:10, :10]
<Range [Book1]Sheet1!$A$1:$J$10>
~~~
## 对象层次结构
下面显示了对象层次结构的示例,即如何从应用程序到Range对象并一直返回:
~~~
>>> rng = xw.apps[10559].books[0].sheets[0].range('A1')
>>> rng.sheet.book.app
<Excel App 10559>
~~~