# 語法概述
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>
~~~