[python3]Excel解析库-openpyxl

https://openpyxl.readthedocs.io/en/stable/

`openpyxl` 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。它允许开发者创建、修改和保存电子表格,而无需依赖 Microsoft Excel 软件本身。`openpyxl` 支持读取和写入 Excel 的工作簿(Workbook)、工作表(Worksheet)、单元格(Cell)以及样式等元素。

### 安装

要使用 `openpyxl`,首先需要安装它。可以通过 pip 工具来安装最新版本:


pip3 install openpyxl

### 基本用法

#### 创建一个新的工作簿

```python
from openpyxl import Workbook

# 创建一个新的工作簿对象
wb = Workbook()

# 获取活动的工作表
ws = wb.active

# 给工作表命名
ws.title = "Sample Sheet"

# 写入数据到单元格
ws['A1'] = "Hello"
ws['B1'] = "World"

# 保存文件
wb.save("sample.xlsx")
```

#### 打开现有的工作簿

```python
from openpyxl import load_workbook

# 加载现有工作簿
wb = load_workbook('existing_file.xlsx')

# 获取所有工作表的名字
print(wb.sheetnames)

# 选择特定的工作表
ws = wb["Sheet1"]

# 或者通过索引获取第一个工作表
ws = wb.worksheets[0]
```

#### 遍历工作表中的行和列

```python
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    print(row)  # 输出每一行的数据元组

# 或者逐个访问单元格
for cell in ws["A"]:
    print(cell.value)
```

#### 添加新的工作表

```python
# 创建新的工作表并指定位置
ws2 = wb.create_sheet("My New Sheet", 0)  # 在最前面插入新工作表
```

#### 修改单元格样式

```python
from openpyxl.styles import Font, Color, Alignment, Border, Side, PatternFill

# 设置字体样式
cell = ws['A1']
cell.font = Font(name='Arial', size=14, bold=True, italic=False)

# 设置对齐方式
cell.alignment = Alignment(horizontal="center", vertical="center")

# 设置边框
thin_border = Border(left=Side(style='thin'), 
                     right=Side(style='thin'), 
                     top=Side(style='thin'), 
                     bottom=Side(style='thin'))
cell.border = thin_border

# 设置背景颜色
cell.fill = PatternFill(start_color="FFCC66", end_color="FFCC66", fill_type="solid")
```

#### 合并和拆分单元格

```python
# 合并单元格
ws.merge_cells('A1:B2')

# 拆分已合并的单元格
ws.unmerge_cells('A1:B2')
```

#### 插入图表

```python
from openpyxl.chart import BarChart, Reference

# 准备数据
data = Reference(ws, min_col=1, min_row=1, max_col=3, max_row=4)

# 创建柱状图
chart = BarChart()
chart.add_data(data, titles_from_data=True)

# 将图表添加到工作表中
ws.add_chart(chart, "E5")
```

### 更多高级功能

- **公式**:可以在单元格中设置公式,例如 `ws['A1'] = '=SUM(A2:A4)'`
- **冻结窗格**:使用 `ws.freeze_panes = 'A2'` 来冻结顶部一行或左侧一列。
- **条件格式**:可以为单元格应用条件格式规则。
- **批注**:支持给单元格添加批注。
- **保护工作表**:可以启用工作表保护以防止意外更改。

### 示例:完整代码示例

以下是一个完整的例子,演示了如何创建包含简单表格的工作簿,并对其进行一些基本操作:

```python
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Side

# 创建一个新的工作簿对象
wb = Workbook()

# 获取活动的工作表
ws = wb.active
ws.title = "Sales Data"

# 添加标题行
headers = ["Product", "Q1 Sales", "Q2 Sales"]
ws.append(headers)

# 设置标题行样式
for col in range(1, len(headers) + 1):
    cell = ws.cell(row=1, column=col)
    cell.font = Font(bold=True)
    cell.alignment = Alignment(horizontal="center")

# 添加数据行
data = [
    ("Widget A", 120, 150),
    ("Widget B", 90, 110),
    ("Widget C", 75, 85)
]

for row in data:
    ws.append(row)

# 保存文件
wb.save("sales_report.xlsx")
```

以上是关于 `openpyxl` 的一些基础知识和常用功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农丁丁

你的认可是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值