写入 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()