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

Python如何无需指定行列号为现有ODS工作表新增一行数据

Python 向ODS工作表自动追加行实现方案

可以通过ezodf库实现自动定位工作表首个空白行并追加数据,无需手动指定行号,操作流程如下:


1. 安装依赖

执行pip命令安装工具库:
pip install ezodf

2. 核心实现代码

import ezodf

def append_row_to_ods(file_path, sheet_name, row_data):
    # 打开本地ODS文件
    doc = ezodf.opendoc(file_path)
    
    # 校验目标工作表是否存在,不存在可自动创建
    if sheet_name not in doc.sheets:
        doc.sheets += ezodf.Sheet(name=sheet_name)
    target_sheet = doc.sheets[sheet_name]

    # 计算首个空白行的行号(默认从0开始计数)
    # 基础逻辑:直接取已使用行数作为起始位,适合无中间空行的表格
    blank_row_idx = target_sheet.nrows()

    # 可选逻辑:如果表格存在中间空行,需要定位到最后一条有效数据后的空白行,替换上面的blank_row_idx计算逻辑即可
    # blank_row_idx = 0
    # for row_idx in range(target_sheet.nrows()):
    #     row_is_empty = all(target_sheet[row_idx, col_idx].value is None for col_idx in range(target_sheet.ncols()))
    #     if not row_is_empty:
    #         blank_row_idx = row_idx + 1

    # 扩容工作表(ezodf需要先扩展行数才能写入新行)
    if blank_row_idx >= target_sheet.nrows():
        target_sheet.append_rows(1)

    # 写入行数据
    for col_idx, cell_value in enumerate(row_data):
        target_sheet[blank_row_idx, col_idx].set_value(cell_value)
    
    # 保存修改
    doc.save()

3. 调用示例

# 要写入的新行数据
new_record = ["2024-06-10", "办公用品", 398.5, "行政部"]
# 传入ODS文件路径、目标工作表名称、行数据即可完成写入
append_row_to_ods("日常台账.ods", "支出记录", new_record)

补充说明

  • 无需提前手动查看表格行号,脚本会自动定位待写入位置
  • 多工作表场景下只需修改调用时传入的sheet_name参数即可匹配写入
  • 行数据长度超过当前工作表列数时,工具会自动扩展列数,无需额外处理

内容的提问来源于stack exchange,提问作者Leonardo Felix da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:54:03