Python Openpyxl库拆分Excel表格:冻结窗格、获取数据、拆分重复行
使用 Python 3.8 版本 Openpyxl 库拆分表格,冻结 A1 窗格,获取第二行单元格所有内容,获取第一列单元格内容,在排除 A1 单元格的情况下将第一列单元格中重复内容的所有行拆分到新的工作表中,新的工作表按照重复内容 + 重复数据的数量 + 人命名内容。
# 导入 openpyxl 库
import openpyxl
# 打开 Excel 文件
wb = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\工作簿1.xlsx')
# 获取第一个工作表
sheet = wb.worksheets[0]
# 冻结 A1 窗格
sheet.freeze_panes = 'A2'
# 获取第二行所有单元格的内容
row2_values = [cell.value for cell in sheet[2]]
# 获取第一列所有单元格的内容
col1_values = [cell.value for cell in sheet['A']]
# 获取重复的单元格内容
duplicates = set([x for x in col1_values if col1_values.count(x) > 1])
# 创建新的工作表
new_sheet = wb.create_sheet('重复数据')
# 写入表头
new_sheet.append(['重复内容', '重复数量', '人命名'])
# 拆分重复数据到新的工作表中
for duplicate in duplicates:
if duplicate != None:
rows = [row for row in sheet.iter_rows(min_row=2, max_col=1, values_only=True) if row[0] == duplicate]
num_rows = len(rows)
for row in rows:
new_sheet.append([duplicate, num_rows, row2_values[row[0]-2]])
# 保存 Excel 文件
wb.save(r'C:\Users\Administrator\Desktop\工作簿1.xlsx')
代码说明:
- 导入 Openpyxl 库:
import openpyxl - 打开 Excel 文件:
wb = openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\工作簿1.xlsx') - 获取第一个工作表:
sheet = wb.worksheets[0] - 冻结 A1 窗格:
sheet.freeze_panes = 'A2' - 获取第二行所有单元格的内容:
row2_values = [cell.value for cell in sheet[2]] - 获取第一列所有单元格的内容:
col1_values = [cell.value for cell in sheet['A']] - 获取重复的单元格内容:
duplicates = set([x for x in col1_values if col1_values.count(x) > 1]) - 创建新的工作表:
new_sheet = wb.create_sheet('重复数据') - 写入表头:
new_sheet.append(['重复内容', '重复数量', '人命名']) - 拆分重复数据到新的工作表中:
- 遍历
duplicates中的每个重复内容 - 获取该内容对应的所有行数据
rows = [row for row in sheet.iter_rows(min_row=2, max_col=1, values_only=True) if row[0] == duplicate] - 计算行数
num_rows = len(rows) - 遍历
rows中的每一行数据,将重复内容、重复数量和人命名信息写入新工作表
- 保存 Excel 文件:
wb.save(r'C:\Users\Administrator\Desktop\工作簿1.xlsx')
注意:
- 请将代码中的
工作簿1.xlsx替换为您的实际文件名。 - 确保您已经安装了 Openpyxl 库。可以使用
pip install openpyxl命令进行安装。 - 代码中使用了
r'C:\Users\Administrator\Desktop\工作簿1.xlsx'的写法,这是 Python 中的原始字符串,可以避免反斜杠的转义问题。 - 代码中假设第一列数据包含重复内容,并且第二行数据包含人命名信息。您可以根据您的实际情况进行调整。
- 代码中使用
sheet.freeze_panes = 'A2'冻结 A1 窗格,这意味着第一行不会被滚动隐藏。您可以根据需要修改参数。 - 代码中使用
values_only=True参数获取单元格的值,可以提高代码效率。 - 代码中使用了
set数据结构存储重复内容,可以避免重复数据。 - 代码中使用了
None判断,可以避免出现错误。 - 代码中使用了
append方法将数据写入工作表,可以方便地添加数据。 - 代码中使用了
save方法保存 Excel 文件。
使用说明:
- 将代码保存为
.py文件。 - 将 Excel 文件和
.py文件放在同一个文件夹下。 - 运行
.py文件。 - 打开 Excel 文件,您将看到一个名为
重复数据的新工作表,其中包含所有重复内容、重复数量和人命名信息。
示例:
假设您的 Excel 文件如下所示:
| 姓名 | 职位 | 部门 | |---|---|---| | 张三 | 经理 | 开发部 | | 李四 | 工程师 | 开发部 | | 王五 | 工程师 | 开发部 | | 张三 | 经理 | 测试部 | | 赵六 | 工程师 | 测试部 |
运行代码后,您将得到一个名为 重复数据 的新工作表,内容如下:
| 重复内容 | 重复数量 | 人命名 | |---|---|---| | 张三 | 2 | 经理 | | 工程师 | 3 | 李四 | | 开发部 | 2 | 张三 |
总结:
本代码演示了如何使用 Openpyxl 库处理 Excel 表格,并提供了以下功能:
- 冻结窗格
- 获取单元格内容
- 获取重复内容
- 拆分表格
- 创建新工作表
- 写入数据
- 保存 Excel 文件
希望本代码能够帮助您更好地理解 Openpyxl 库的使用方法。
原文地址: https://www.cveoy.top/t/topic/fXaG 著作权归作者所有。请勿转载和采集!