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("新列已成功插入并保存!")