我尝试使用Python在Excel文件中添加日期时出错

时间:2015-12-09 11:28:10

标签: python datetime openpyxl

我想使用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']

我确实设法解决了这个错误。

感谢您的时间和帮助。

2 个答案:

答案 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)