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
相关产品推荐
相关产品推荐

