You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

openpyxl技术咨询:未知行列维度取单元格值及指定区域粘贴

嘿,刚接触Python和openpyxl的话,这两个问题其实挺典型的,我来一步步给你捋明白~

问题1:获取未知行列维度的工作表所有单元格值

完全可以!openpyxl提供了非常方便的方式来获取整张表的所有值,不用提前知道行列数。最简洁的方法是用工作表的values属性,它会返回一个生成器,按行遍历所有单元格的值,每行的值会组成一个元组。你可以把它转成列表,方便后续操作。

举个例子:

from openpyxl import load_workbook

# 打开源工作簿
source_wb = load_workbook("你的源文件.xlsx")
# 可以指定具体工作表,比如source_wb["Sheet1"],这里用active取当前活跃表
source_ws = source_wb.active

# 获取所有单元格的值,转成二维列表(每行是一个子列表)
all_data = [list(row) for row in source_ws.values]

这样不管你的源表有多少行多少列,all_data都会完整保存所有单元格的值。

问题2:将数据粘贴到指定工作簿的第4行第4列

openpyxl里的行和列都是从1开始计数的,第4行第4列对应的就是单元格D4。我们只需要遍历刚才拿到的all_data,计算每个值对应的目标单元格位置,然后写入即可。

代码示例如下:

from openpyxl import load_workbook, Workbook

# 处理目标工作簿:如果存在就打开,不存在就新建
try:
    target_wb = load_workbook("你的目标文件.xlsx")
except FileNotFoundError:
    target_wb = Workbook()
# 同样可以指定具体工作表,比如target_wb["目标工作表"]
target_ws = target_wb.active

# 起始位置:第4行第4列
start_row = 4
start_col = 4

# 遍历数据,逐个写入目标单元格
for row_index, row_data in enumerate(all_data):
    for col_index, cell_value in enumerate(row_data):
        # 计算目标单元格的行号和列号
        target_row = start_row + row_index
        target_col = start_col + col_index
        # 写入值
        target_ws.cell(row=target_row, column=target_col, value=cell_value)

# 一定要保存!否则修改不会生效
target_wb.save("你的目标文件.xlsx")

这里用enumerate来获取数据的行/列索引(从0开始),加上起始的4,就能精准定位到从D4开始的区域。如果目标文件一开始不存在,代码会自动新建一个,避免报错。

小提醒

如果你的源工作表有合并单元格,values属性只会读取合并区域左上角单元格的值,这是正常的行为哦。如果需要处理合并单元格的特殊情况,可能需要额外判断,但如果只是复制普通数据的话,上面的代码完全够用。

内容的提问来源于stack exchange,提问作者SuppaDuppa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:21:17