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

