我想用标准格式dd-mm-yyyy
替换特定格式的日期。第10列中的实际日期类似于6.2017
,7.2017
,其中7
是月份,2017
是年份。我只需要在所有值之前添加1-
,然后我想用-
(连字符)替换日期值中的点。因此输出看起来像1-6-2017
,1-7-2017
。请注意,该列可能包含none
个值。在这种情况下,我想跳过这些没有值。
这就是我试过的,
from openpyxl import load_workbook
wb = load_workbook(r'E:\foo\Python\stocktable.xlsx')
ws = wb.get_active_sheet()
for rownum in range(2, ws.get_highest_row()):
print(str(ws.cell(row=rownum, column=10).value))
输出:
6.2017
7.2016
7.2017
6.2017
7.2017
7.2017
2.2016
7.2017
8.2016
None
所以我在上面的代码中加了一点点调整,以适应我的情况。但它失败了。
from openpyxl import load_workbook
wb = load_workbook(r'E:\foo\Python\stocktable.xlsx')
ws = wb.get_active_sheet()
for rownum in range(2, ws.get_highest_row()):
ws.cell(row=rownum, column=10).value = '1-' + str(ws.cell(row=rownum, column=10).value.replace('.', '-')
wb.save(r'E:\foo\Python\stocktable.xlsx')
也就是说,它显示了一个symtax错误,如
File "E:\foo\Python\python-excel.py", line 7
wb.save()
^
SyntaxError: invalid syntax
答案 0 :(得分:0)
如果您只想更改日期或时间的格式,则只需更改单元格的number_format
。
for row in range(2, ws.max_row):
cell = ws.cell(row=row, column=10)
cell.number_format = "dd-mm-yyyy"
答案 1 :(得分:-1)
好的,我发现了问题,下面的代码对我有用。
from openpyxl import load_workbook
wb = load_workbook(r'E:\foo\Python\stocktable.xlsx')
ws = wb.get_active_sheet()
for rownum in range(2, ws.get_highest_row()):
try:
month, year = str(ws.cell(row=rownum, column=10).value).split(".")
ws.cell(row=rownum, column=10).value = '1-' + str(month) + '-' + str(year)
except ValueError:
pass
wb.save(r'E:\foo\Python\stocktable.xlsx')
就像@shahkalpesh在他的评论中所说的那样,我只是根据点分割字符串(首先它是浮点格式,所以我将它转换为字符串然后根据点进行拆分)并将值保存到{{ 1}}和month
变量。
然后我将代码放在year
try
块中,因为该列包含except
值。