在现今的数据分析和处理中,Excel表格是一个不可或缺的工具。然而,由于Excel的处理能力有限,对于大规模数据的处理和分析会变得非常耗时和低效。因此,许多人选择使用Python来处理数据,而openpyxl是Python中一个非常流行的Excel读写库。本文将介绍如何使用Python3.7 openpyxl在Excel单元格中写入数据,包括基本的单元格写入、批量写入和格式化写入。
基本的单元格写入
首先,我们需要安装openpyxl库。可以通过在终端上输入以下命令来安装:
pip install openpyxl
接下来,我们需要创建一个新的工作簿,并在其中创建一个新的工作表。以下是Python代码示例:
```python
from openpyxl import Workbook
# 创建一个工作簿
workbook = Workbook()
# 选中工作表
worksheet = workbook.active
# 在单元格A1中写入数据
worksheet['A1'] = 'Hello, World!'
# 保存工作簿
workbook.save('example.xlsx')
```
在上述示例中,我们使用Workbook()函数创建了一个新的工作簿,然后使用active属性选择了默认工作表。接下来,我们使用单元格的坐标来选择单元格,然后使用赋值语句向它们写入数据。在这个例子中,我们向单元格A1写入了“Hello, World!”。最后,我们使用save()函数将工作簿保存在本地磁盘上。
批量写入
在处理大规模数据时,单元格的批量写入是非常重要的。以下是Python代码示例:
```python
from openpyxl import Workbook
# 创建一个工作簿
workbook = Workbook()
# 选中工作表
worksheet = workbook.active
# 准备数据
data = [
['Apple', '100', 'Red'],
['Banana', '200', 'Yellow'],
['Orange', '300', 'Orange'],
['Grape', '400', 'Purple']
]
# 批量写入数据
for i in range(len(data)):
for j in range(len(data[i])):
cell = worksheet.cell(row=i+1, column=j+1)
cell.value = data[i][j]
# 保存工作簿
workbook.save('example.xlsx')
```
在此示例中,我们使用两个for循环遍历数据列表,并在每个单元格上使用cell()函数。最后,我们使用value属性将数据写入单元格中。在这个例子中,我们向单元格A1、B1、C1、A2、B2、C2、A3、B3、C3、A4、B4和C4写入了“Apple”、“100”、“Red”、“Banana”、“200”、“Yellow”、“Orange”、“300”、“Orange”、“Grape”和“400”、“Purple”。
格式化写入
有时,我们需要使用格式化写入来更好地呈现数据。以下是Python代码示例:
```python
from openpyxl import Workbook
from openpyxl.styles import Alignment, Font, PatternFill
# 创建一个工作簿
workbook = Workbook()
# 选中工作表
worksheet = workbook.active
# 准备数据
data = [
['Apple', '100', 'Red'],
['Banana', '200', 'Yellow'],
['Orange', '300', 'Orange'],
['Grape', '400', 'Purple']
]
# 批量写入数据
for i in range(len(data)):
for j in range(len(data[i])):
cell = worksheet.cell(row=i+1, column=j+1)
cell.value = data[i][j]
# 格式化单元格
for i in range(1, worksheet.max_column+1):
worksheet.column_dimensions[chr(64+i)].width = 20
for i in range(1, worksheet.max_row+1):
worksheet.row_dimensions[i].height = 30
for j in range(1, worksheet.max_column+1):
cell = worksheet.cell(row=i, column=j)
if i == 1:
cell.font = Font(bold=True, color='FFFFFF')
cell.fill = PatternFill(start_color='000000', end_color='000000', fill_type='solid')
cell.alignment = Alignment(horizontal='center', vertical='center')
else:
if j == 1:
cell.font = Font(bold=True)
cell.alignment = Alignment(horizontal='center', vertical='center')
if j == 2:
cell.number_format = '#,##0'
cell.alignment = Alignment(horizontal='center', vertical='center')
if j == 3:
color = data[i-2][2]
cell.fill = PatternFill(start_color=color, end_color=color, fill_type='solid')
cell.alignment = Alignment(horizontal='center', vertical='center')
# 保存工作簿
workbook.save('example.xlsx')
```
在此示例中,我们使用了openpyxl.styles模块来设置单元格的字体、填充和对齐方式。我们还使用了column_dimensions和row_dimensions属性来设置列和行的宽度和高度。在这个例子中,我们使用了以下格式:
- 第一行的字体为粗体,颜色为白色,背景为黑色,水平和垂直对齐方式为居中。
- 第一列的字体为粗体,水平和垂直对齐方式为居中。
- 第二列的数字格式为千位分隔符,水平和垂直对齐方式为居中。
- 第三列的单元格填充颜色为数据列表中的颜色,水平和垂直对齐方式为居中。