如何使用Python将1D数组写入现有Excel文件的指定单元格起始位置
Python操作现有Excel局部写入指定位置方案
前置说明
针对需要保留原有Excel所有工作表数据,仅在指定工作表的指定位置写入一维数组的需求,推荐以下两种常用实现方案,均不会覆盖其他区域的原有数据:
方案1:openpyxl实现(最稳妥,推荐)
该方案仅操作指定单元格,完全不影响其他区域内容,适配xlsx格式文件:
- 先安装依赖:
pip install openpyxl - 代码示例(适配示例需求:将
[1,2,3,4,5]写入Sheet3的E列第10行起):
from openpyxl import load_workbook # 加载现有Excel文件 wb = load_workbook("你的Excel文件路径.xlsx") # 选中目标工作表 target_sheet = wb["Sheet3"] # 待写入数组 write_arr = [1,2,3,4,5] # 配置写入位置:E列对应列号为5(A=1、B=2以此类推),起始行号为10 col_num = 5 start_row = 10 # 循环写入数组元素 for idx, val in enumerate(write_arr): target_sheet.cell(row=start_row + idx, column=col_num, value=val) # 保存修改 wb.save("你的Excel文件路径.xlsx")
方案2:pandas实现(适配已使用pandas做数据处理的场景)
如果你的数据读取、计算逻辑已经用pandas实现,可以用该方案减少代码冗余:
- 安装依赖:
pip install pandas openpyxl - 代码示例:
import pandas as pd write_arr = [1,2,3,4,5] file_path = "你的Excel文件路径.xlsx" # 开启追加写入模式,overlay参数指定保留目标工作表原有内容 with pd.ExcelWriter( file_path, mode="a", engine="openpyxl", if_sheet_exists="overlay" ) as writer: # pandas的行列索引从0开始计数:E列对应startcol=4,第10行对应startrow=9 pd.DataFrame(write_arr).to_excel( writer, sheet_name="Sheet3", startcol=4, startrow=9, header=False, index=False )
注意事项
上述方案仅支持xlsx格式文件,如果你使用的是xls格式(Excel 2003及更早版本),可以改用xlwings或xlutils库实现,操作逻辑一致,仅API语法存在差异。
内容的提问来源于stack exchange,提问作者olliver_27
相关产品推荐
相关产品推荐

