我想使用openpyxl在excel电子表格中添加最后14天的日期。
我用它来创建一个包含我想要的每个日期的数组,然后在excel中编写它。今天是B1的今天日期。
import urllib2
import json
import time
from openpyxl import Workbook
from openpyxl import load_workbook
from datetime import date, datetime, timedelta
wb = load_workbook(filename = 'stats.xlsx')
dest_filename = 'stats.xlsx'
ws = '<Worksheet "sheet">'
wsFR = '<Worksheet "France">'
wsIT = '<Worksheet "Italie">'
wsFR = '<Worksheet "Belgique">'
wb2 = load_workbook(filename = 'statsOrders.xlsx')
dest_filename = 'statsOrders.xlsx'
ws2 = wb2.active
for day in range(13):
todayminus = today - timedelta(days=day)
wsFR.cell(row=day+1, column=2, value=todayminus)
当我尝试这个时,我收到了这个错误:
TypeError: 'str' object does not support item assignment
在我的数组中,日期时间被转换为字符串,当我打印数组时,一切看起来都很好。
['2015-12-09', '2015-12-08', '2015-12-07', '2015-12-06', '2015-12-05', '2015-12-04', '2015-12-03', '2015-12-02', '2015-12-01', '2015-11-30', '2015-11-29', '2015-11-28', '2015-11-27']
我确实设法解决了这个错误。
感谢您的时间和帮助。
答案 0 :(得分:0)
您应该使用其中一个日期时间函数而不是str()将日期时间对象 todayminus 转换为字符串。
例如,尝试更换
datetminus.append(str(todayminus))
与
dateminus.append(todayminus.strftime('%Y-%m-%d'))
应该有效
答案 1 :(得分:0)
您的代码不完整且缺少tracebrack,这会告诉我们哪条线路导致了问题。我可以毫无问题地运行代码,所以我怀疑你的工作表不是你想象的那样。
首先,我认为不需要中间循环:您可以根据需要简单地分配单元格。假设您要将日期放在第二列中:
from openpyxl import Workbook
wb = Workbook()
wsFR = wb.active
from datetime import date, timedelta
today = date.today()
for day in range(13):
todayminus = today - timedelta(days=day)
wsFR.cell(row=day+1, column=2, value=todayminus)