`xlwings` 是一個強大的 Python 庫,它允許你直接與 Microsoft Excel 進行交互。通過 `xlwings`,你可以輕松地在 Python 腳本或 Jupyter Notebook 中讀取、寫入和操作 Excel 文件,而無需手動打開 Excel 應用程序。此外,`xlwings` 還支持將 Python 函數作為宏(User Defined Functions, UDFs)嵌入到 Excel 中,從而擴展了 Excel 的功能。
安裝
要使用 `xlwings`,首先需要安裝它。可以通過 `pip` 來安裝最新版本:
```bash
pip install xlwings
```
對于 Windows 用戶,還需要確保已經安裝了 Microsoft Excel。Mac 用戶則可以使用自帶的 Numbers 或者安裝 Excel for Mac。
基本用法
#### 創建新的工作簿```python
import xlwings as xw# 創建一個新的工作簿
wb = xw.Book()# 獲取活動的工作表
sheet = wb.sheets[0]# 寫入數據到單元格
sheet.range('A1').value = 'Hello'
sheet.range('B1').value = 'World'# 保存文件
wb.save('example.xlsx')# 關閉工作簿
wb.close()
```#### 打開現有的工作簿```python
# 打開現有的工作簿
wb = xw.Book('existing_file.xlsx')# 獲取所有工作表的名字
print(wb.sheet_names)# 選擇特定的工作表
sheet = wb.sheets['Sheet1']# 或者通過索引獲取第一個工作表
sheet = wb.sheets[0]
```#### 讀取和寫入數據```python
# 寫入單個值
sheet.range('A1').value = 'Hello'# 寫入多個值
sheet.range('A2').options(transpose=True).value = ['Python', 'is', 'awesome']# 讀取單個值
cell_value = sheet.range('A1').value
print(cell_value) ?# 輸出: Hello# 讀取多個值
cell_values = sheet.range('A2:A4').value
print(cell_values) ?# 輸出: ['Python', 'is', 'awesome']
```#### 遍歷工作表中的行和列```python
# 遍歷所有非空行
for row in sheet.used_range.rows:print([cell.value for cell in row])# 遍歷指定范圍內的行
for row in sheet.range('A1:B3').rows:print([cell.value for cell in row])
```#### 添加圖表```python
import numpy as np# 準備一些數據
data = np.random.rand(5, 3)
sheet.range('A1').value = data# 插入柱狀圖
chart = sheet.charts.add(left=200, top=20, width=400, height=300)
chart.set_source_data(sheet.range('A1:C6'))
chart.chart_type = 'column_clustered'
```### 高級特性#### 將 Python 函數作為宏嵌入到 Excel 中`xlwings` 支持將 Python 函數注冊為 Excel 中的 UDF(用戶定義函數),這使得你可以在 Excel 公式中調用 Python 代碼。1. **創建一個包含 UDF 的 Python 文件**:```pythonimport xlwings as xw@xw.funcdef hello(name):return f"Hello {name}!"```2. **在 Excel 中運行 Python 函數**:- 在 Excel 中按 `Alt + F11` 打開 VBA 編輯器。- 插入模塊并添加以下代碼來啟動 Python 解釋器:```vbaSub RunPython()RunPython ("import udf_module; udf_module.hello('World')")End Sub```- 或者直接在 Excel 單元格中使用公式調用 Python 函數:```excel=hello("World")```#### 使用 `xlwings` 與 Pandas 結合`xlwings` 和 `pandas` 結合得非常好,可以方便地將 DataFrame 讀入或寫出 Excel 文件。```python
import pandas as pd
import xlwings as xw# 創建一個示例 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3],'Column2': ['A', 'B', 'C']
})# 寫入 DataFrame 到 Excel
wb = xw.Book()
sheet = wb.sheets[0]
sheet.range('A1').value = df# 從 Excel 讀取 DataFrame
df_from_excel = sheet.range('A1').options(pd.DataFrame, expand='table').value
print(df_from_excel)
```### 示例:完整代碼示例以下是一個完整的例子,演示了如何使用 `xlwings` 創建包含圖表的工作簿,并將其保存到文件系統中:```python
import xlwings as xw
import numpy as npdef create_workbook_with_chart():# 創建一個新的工作簿wb = xw.Book()# 獲取活動的工作表sheet = wb.sheets[0]# 準備一些隨機數據data = np.random.rand(5, 3)sheet.range('A1').value = data# 插入柱狀圖chart = sheet.charts.add(left=200, top=20, width=400, height=300)chart.set_source_data(sheet.range('A1:C6'))chart.chart_type = 'column_clustered'# 保存文件wb.save('workbook_with_chart.xlsx')# 關閉工作簿wb.close()if __name__ == "__main__":create_workbook_with_chart()
```
總結
`xlwings` 是一個非常靈活且功能豐富的庫,適用于需要與 Excel 緊密集成的應用場景。它不僅簡化了 Python 和 Excel 之間的數據交換,還提供了將 Python 邏輯嵌入 Excel 的強大能力。