请原谅我的新手问题。在
我有一个.xlsx电子表格,其中包含字符串、整数和日期。我正在使用Openpyxl按行读取它,然后将其写回许多文本文件。我现在遇到的唯一问题是日期时间格式,我只想要日期,而不是时间。在
这是我的代码:import openpyxl
wb = openpyxl.load_workbook('sample.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
numRows = sheet.max_row
destFile = "output.txt"
with open(destFile, "w") as text_file:
for i in range(1,numRows):
for cellObj in sheet.rows[i]:
print(cellObj.value, ',', sep = '', end = '', file=text_file)
print(file=text_file)
数据如下:
^{pr2}$
我得到的是:2016-04-15 00:00:00,Smith,14100,
2016-06-19 00:00:00,Bertram,22800,
2016-08-21 00:00:00,Jones,25600,
我希望它看起来像原版一样(多余的逗号并不会影响我)。我发现了许多解决方案,似乎是为了格式化插入到另一个电子表格中的日期,但我似乎不知道如何在输出到文本文件时实现这一点。我还发现了类似的解决方案,可以打印当前日期或计算日期,但不能直接重新格式化已存储的内容。在
提前非常感谢!在
更新:
查理·克拉克的回答完全正确。在
下面是一个有效的版本:我用日期硬编码了列,但它很容易成为一个变量。在import openpyxl
import datetime
wb = openpyxl.load_workbook('sample.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
numRows = sheet.max_row +1
numCols = sheet.max_column +1
destFile = "output.txt"
with open(destFile, "w") as text_file:
for i in range(0,numRows-1):
for cellObj in sheet.rows[i]:
if cellObj in sheet.columns[0]:
print(cellObj.value.strftime('%m/%d/%Y'), end = ',', file=text_file)
else:
print(cellObj.value, ',', sep = '', end = '', file=text_file)
print(file=text_file)