Python中,可以实现读取Excel文件数据,并通过第一行的数据查找到指定的列,在该列的前或后插入一列数据,插入的列数据从JSON文件中读取。处理完成后保存在原来的Excel文件中。本文主要介绍Python 读取Excel文件并在指定位置插入一列的方法。

1、使用openpyxl实现

openpyxl是一个强大的Python库,专门用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件。它支持最新的Excel格式,并提供了丰富的功能,可以帮助你轻松地处理Excel表格。

1)获取指定的列

根据Excel文件中第一行数据,按照指定的数据获取行。

import openpyxl

# 读取Excel文件
wb = openpyxl.load_workbook('data.xlsx')
ws = wb.active  # 获取活动工作表

# 查找列名(假设查找的是 'age' 列)
header = [cell.value for cell in ws[1]]  # 获取第一行数据,即表头
target_column_name = 'age'  # 我们想要在这个列前插入新列

# 查找目标列的索引
if target_column_name in header:
    col_index = header.index(target_column_name) + 1  # 获取列索引(1-based)
else:
    raise ValueError(f"未找到目标列:{target_column_name}")

# 在目标列前插入新列
ws.insert_cols(col_index)  # 插入新列,位置是目标列的索引

# 填充新列的数据
ws.cell(row=1, column=col_index, value='phone')  # 新列的标题
ws.cell(row=2, column=col_index, value='123-456-7890')  # 插入第2行的phone数据
ws.cell(row=3, column=col_index, value='987-654-3210')  # 插入第3行的phone数据
ws.cell(row=4, column=col_index, value='555-666-7777')  # 插入第4行的phone数据

# 保存修改后的Excel文件
wb.save('data_updated.xlsx')

print("新列已成功插入并保存!")

2)读取JSON文件

读取JSON文件中的数据,插入到Excel文件中指定的列。

import openpyxl
import json

# 读取JSON文件
with open('data.json', 'r') as f:
    phone_data = json.load(f)

# 读取Excel文件
wb = openpyxl.load_workbook('data.xlsx')
ws = wb.active  # 获取活动工作表

# 查找列名('age' 列)
header = [cell.value for cell in ws[1]]  # 获取第一行数据,即表头
target_column_name = 'age'  # 我们想要在这个列前插入新列

# 查找目标列的索引
if target_column_name in header:
    col_index = header.index(target_column_name) + 1  # 获取列索引(1-based)
else:
    raise ValueError(f"未找到目标列:{target_column_name}")

# 在目标列前插入新列
ws.insert_cols(col_index)  # 3表示插入列的位置,即在"age"列前插入

# 填充新列的数据(从JSON数据中读取)
ws.cell(row=1, column=col_index, value='phone')  # 新列的标题
for i, entry in enumerate(phone_data, start=2):  # 从第2行开始(假设第1行是表头)
    ws.cell(row=i, column=col_index, value=entry['phone'])  # 填充数据

# 保存修改后的Excel文件
wb.save('data_updated.xlsx')

print("新列已成功插入并保存!")

2、使用pandas实现

Pandas 是Python编程语言中用于数据分析和操作的高性能、易用的开源库。它提供了高效、灵活的结构化数据对象,以及一系列用于数据分析和操作的工具。

import pandas as pd
import json

# 读取JSON文件
with open('data.json', 'r') as f:
    phone_data = json.load(f)

# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 将 JSON 数据转化为 DataFrame,提取 'phone' 列
phone_df = pd.DataFrame(phone_data)

# 找到 'age' 列的索引
age_index = df.columns.get_loc('age')

# 将 'phone' 列插入到 'age' 列前
df.insert(age_index, 'phone', phone_df['phone'])

# 保存修改后的 Excel 文件
df.to_excel('data_updated.xlsx', index=False)

print("新列已成功插入并保存!")

推荐文档