统计Excel表格数据最大版本
AI-摘要
JinzAI GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
平时的工作中总有一些需求可以用python来解决,但是平时解决掉之后并没有做记录,然后导致同样的需求重复出现后又去重新写脚本,非常滴不nice😄。有一个需求是excel表格中有若干条(上千条)关于番号和版本的记录(其中第一版为“N”版,其他版本是从1开始递增的整数),针对以上需求写了一个小脚本,此处整理后做个小记录。顺便说一句,今天心情不错呵呵🎈🎆🎇😄。
import openpyxl
# 从第二行开始遍历(假设第一行是表头)
def get_max_versions(file_path, name_idx, version_idx):
# 读取 Excel 文件
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active # 获取活动工作表
# 获取表头(第一行)
headers = [cell.value for cell in sheet[1]] # sheet[1] 获取第一行,cell.value 获取单元格的值
# 创建一个字典来存储每个名称及其最大版本
max_versions = {}
for row in sheet.iter_rows(min_row=2, max_col=len(headers), values_only=True):
row = list(row)
row[version_idx] = 0 if row[version_idx] == 'N' else int(row[version_idx])
# 如果名称不存在字典中,或者当前版本大于已存储的最大版本,则更新
if row[name_idx] not in max_versions or row[version_idx] > max_versions[row[name_idx]][version_idx]:
max_versions[row[name_idx]] = row
return headers, max_versions
def save_to_excel(headers, data, output_filename):
# 创建一个新的 Excel 工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active # 获取活动工作表
sheet.append(headers)
# 将数组写入工作表
for row in data:
print(row)
print(type(row))
sheet.append(row)
# 保存文件
output_file_path = output_filename # 输出文件路径
workbook.save(output_file_path)
print(f'数据已写入 {output_file_path}')
if __name__ == '__main__':
headers, max_versions = get_max_versions(file_path='台账(1).xlsx', name_idx=0, version_idx=3) # 名字或者番号对应第一列,版本在第三列
save_to_excel(headers=headers, data=max_versions.values(), output_filename='output.xlsx')
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Jinz
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果