写入 API 失败!无法修改单元格。

结果是

--- PY 脚本开始执行同步 ---

⚠️ 成功读取,但 AL7 区域返回空数据,将写入值设置为: 0

复制

最终写入失败!错误: 'str' object cannot be interpreted as an integer

这可能意味着 WPS PY 脚本对单元格写入功能有其他未知的严格限制。

这里开始代码:

# WPS 在线表格 PY 脚本:最终修正版 - 强制写入数字 0 代替空值

import pandas as pd

from datetime import datetime

# --- 配置 ---

LATEST_SHEET_NAME = "最新出勤"

def main():

print("--- PY 脚本开始执行同步 ---")

# 1. 确定今天的日期和目标列 (保持不变)

today_day = datetime.now().day

start_col_index = 21 # U 列

target_col_index = start_col_index + (today_day - 1)

def col_index_to_letter(col):

letter = ''

while col > 0:

temp = (col - 1) % 26

letter = chr(temp + ord('A')) + letter

col = (col - temp - 1) // 26

return letter

target_cell_address = f"{col_index_to_letter(target_col_index)}2"

if target_col_index < start_col_index or target_col_index > 51:

print(f"⚠️ 今天的日期 ({today_day} 号) 超出了有效范围,跳过写入。")

return

# 2. 读取 AL7 的值

try:

df_al7 = xl("AL7", LATEST_SHEET_NAME)

if df_al7.empty:

al7_value = 0 # 🚨 修正 1:如果 DataFrame 为空,强制赋值为数字 0

print(f"⚠️ 成功读取,但 AL7 区域返回空数据,将写入值设置为: {al7_value}")

else:

al7_value = df_al7.iloc[0, 0]

# 🚨 修正 2:如果读取的值是 NaN (Pandas的空值),也赋值为数字 0

if pd.isna(al7_value):

al7_value = 0

print(f"⚠️ 成功读取,但 AL7 的值是空的 (NaN),将写入值设置为: {al7_value}")

print(f" 成功读取:AL7 的最终写入值为: {al7_value}")

except Exception as e:

print(f" 致命读取错误:请检查 '{LATEST_SHEET_NAME}' 工作表名称是否正确。错误: {e}")

return

# 3. 写入目标单元格

try:

# 写入的数据必须是 List 或 DataFrame。

data_to_write = [[al7_value]]

write_xl(

data_to_write,

target_cell_address,

LATEST_SHEET_NAME

)

print(f" 写入成功:值已写入 '{LATEST_SHEET_NAME}!'{target_cell_address}")

except Exception as e:

print(f" 最终写入失败!错误: {e}")

print("这可能意味着 WPS PY 脚本对单元格写入功能有其他未知的严格限制。")

if __name__ == "__main__":

main()

上海
浏览 31
收藏
点赞
分享
+1
+1
全部评论