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

Python实现每次调用函数时递增变量并向Excel追加内容

实现每次调用向Excel追加短信内容,自动递增行号

咱们先梳理下原代码里需要调整的几个小问题:

  • 每次运行都新建Workbook会直接覆盖原有文件,得先判断文件是否存在,存在就打开,不存在再新建并初始化表头
  • 类里的行号变量i和receive_sms里的参数i没关联上,没法实现自动递增
  • 原代码只写入了短信内容,没把电话号码也写入Excel

下面是修正后的完整代码,完美实现你要的需求:

import os
import openpyxl
from flask import request  # 假设你用Flask处理请求,可根据实际框架调整

class ExcelSmsWriter:
    def __init__(self, file_path):
        self.file_path = file_path
        # 判断文件是否存在,不存在则新建并初始化表头
        if os.path.exists(file_path):
            self.book = openpyxl.load_workbook(file_path)
            self.sheet = self.book.active
            # 从已有内容的下一行开始写入,避免覆盖
            self.row_num = self.sheet.max_row + 1 if self.sheet.max_row >=1 else 2
        else:
            self.book = openpyxl.Workbook()
            self.sheet = self.book.create_sheet("Sheet", 0)
            # 初始化表头
            self.sheet.cell(row=1, column=4).value = "Sender's Phone Number"
            self.sheet.cell(row=1, column=5).value = "Receiver's Phone Number"
            self.sheet.cell(row=1, column=6).value = "Verification Code"
            self.row_num = 2  # 首次写入从第2行开始

    def append_sms(self):
        # 获取请求里的短信数据
        from_number = request.values.get('From')
        to_number = request.values.get('To')
        text = request.values.get('Text')

        # 打印收到的消息
        print(f"Message received - From: {from_number}, To: {to_number}, Text: {text}")

        # 写入当前行
        self.sheet.cell(row=self.row_num, column=4).value = from_number
        self.sheet.cell(row=self.row_num, column=5).value = to_number
        self.sheet.cell(row=self.row_num, column=6).value = text

        # 行号自动递增
        self.row_num += 1

        # 保存文件
        self.book.save(self.file_path)
        return "Message received"

# 初始化实例,指定Excel文件路径
os.chdir("/Users/name/Desktop/name/name")
sms_writer = ExcelSmsWriter("numbers.xlsx")

# 每次收到短信时调用这个方法即可
# 比如在Flask路由里:
# @app.route('/receive-sms', methods=['POST'])
# def handle_sms():
#     return sms_writer.append_sms()

关键逻辑说明:

  • __init__方法处理Excel文件的初始化:如果文件已经存在,就打开它并把行号设置为已有内容的下一行;如果是首次创建,就初始化表头并把行号设为2。
  • append_sms方法负责接收短信数据、写入当前行、自动递增行号并保存文件,每次调用都会往Excel里追加一行新内容。
  • 把电话号码和短信内容分别写入不同列,方便后续查看和整理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:00:29