[英]Access excel cells value with openpyxl
在我的项目中,每次按下按钮时,时间都会保存在 self.time 变量中,我将其转换为日期时间,然后每次单击将其写入不同列的 Excel 文件中。 我还想做的是在 excel 中写入另一个点击所需的实际时间(基本上是已经写入的值减去保存的新时间)。 这是我的代码:
from openpyxl import load_workbook
from datetime import datetime
self.time.append(self.saved)
fmt = '%H:%M:%S'
current_row = sheet.max_row
current_column = sheet.max_column
sheet.cell(row=3, column=current_column + 1).value = str(self.time)
sheet.cell(row=4, column=current_column + 1).value = datetime.strptime(self.time, fmt) - datetime.strptime(sheet.cell(row=3, column=current_column + 1).value, fmt)
不幸的是,它只是让我返回 00:00:00 作为结果。 如何成功访问第3行保存的前一个值以找到需要单击的时间? 编辑:可能只有时差吗? 无需保存 str(self.time) ?
您的代码并未尝试读取第 3 行中的值; 它设置第 3 行单元格的值,然后将第 4 行单元格的值设置为第 3 行单元格的值减去自身。 本质上,第 4 行的代码是“datetime(self.time) - datetime(self.time)”,这就是为什么你得到 00:00:00。
要获取工作表中的最后一个值与当前 self.time 值之间的时间差:
from datetime import datetime
from openpyxl import load_workbook
# load workbook and get the desired sheet
wb = load_workbook('file name')
ws = wb['sheet name']
# represents self.time from your example
time = "04:12:21"
fmt = "%H:%M:%S"
current_row = ws.max_row
current_column = ws.max_column
# get the last value
last_value = ws.cell(row=current_row, column=current_column).value
# subtract current time from last_value
value_to_insert = datetime.strptime(last_value, fmt) - datetime.strptime(time, fmt)
# write the value to worksheet
ws.cell(row=current_row + 1, column=current_column).value = value_to_insert
wb.save('file name')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.