优草派  >   Python

python3.7 openpyxl 在excel单元格中写入数据实例

王子涵            来源:优草派

在现今的数据分析和处理中,Excel表格是一个不可或缺的工具。然而,由于Excel的处理能力有限,对于大规模数据的处理和分析会变得非常耗时和低效。因此,许多人选择使用Python来处理数据,而openpyxl是Python中一个非常流行的Excel读写库。本文将介绍如何使用Python3.7 openpyxl在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属性来设置列和行的宽度和高度。在这个例子中,我们使用了以下格式:

- 第一行的字体为粗体,颜色为白色,背景为黑色,水平和垂直对齐方式为居中。

- 第一列的字体为粗体,水平和垂直对齐方式为居中。

- 第二列的数字格式为千位分隔符,水平和垂直对齐方式为居中。

- 第三列的单元格填充颜色为数据列表中的颜色,水平和垂直对齐方式为居中。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行