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

如何用Python的XlsxWriter动态将嵌套列表写入Excel指定位置?

问题:XlsxWriter写入嵌套列表时单元格定位异常

我尝试使用XlsxWriter向Excel工作表写入数据,但单元格定位不正确。我有一个名为q_arr的嵌套列表,示例数据如下:

q_arr = [
    ["", "", "", ""],
    ["yes", "", "", "comp", ""],
    ["cateA", "comp", "", "mode"]
]

该列表元素数量不固定,且包含需要保留的空值。目前我已通过以下代码在遍历docs的循环中向第0列写入date数据:

row = 1
for index, result in enumerate(docs):
    sheet.write(row, 0, result["date"])
    row = row + 1

现在需要在该循环内,从第36列、第1行(第0行为表头)开始动态写入q_arr的数据。我尝试了以下代码,但所有内容都被写入同一行,无法正常工作:

row = 1
for index, result in enumerate(docs):
    sheet.write(row, 0, result["date"])
    for row_values in q_arr:
        sheet.write(rows, cols, row_values)
        cols += 1
            
    cols = 36
    rows += 1
    row = row + 1

而脱离docs循环的测试代码(如下)能正常运行:

for row_values in q_arr:
    for val in row_values:
        sheet.write(rows, col, val)
        col += 1
    col = 36
    rows += 1

请问如何通过Python的XlsxWriter动态将嵌套列表写入Excel?


解决方案

问题核心是变量逻辑混乱和直接写入整个列表导致定位错误,修正后的代码如下:

# 初始化行号,从第1行开始(第0行是表头)
row = 1

for result in docs:
    # 写入当前行第0列的日期数据
    sheet.write(row, 0, result["date"])
    
    # 从当前row开始,向36列起写入q_arr的数据
    current_row = row
    col = 36
    
    # 遍历q_arr的每个子列表(对应Excel的一行)
    for row_values in q_arr:
        # 遍历子列表的每个元素,写入当前行的对应列
        for val in row_values:
            sheet.write(current_row, col, val)
            col += 1
        # 写完一行子列表后,重置列到36,行号+1
        col = 36
        current_row += 1
    
    # 更新主行号到q_arr写完后的下一行
    row = current_row

关键修正说明:

  1. 行号关联:用current_row绑定当前date行与q_arr的起始行,确保每个docs条目对应的q_arr内容紧跟在日期行之后
  2. 拆分元素写入:嵌套遍历q_arr的子列表和内部元素,将每个值写入独立单元格,避免把整个列表塞进单个单元格
  3. 索引重置:每写完q_arr的一个子列表(Excel的一行),就把列索引重置回36,保证下一行从正确位置开始写入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:10:24