我有一个功能,可以输入Excel文件并将每个选项卡转换为CSV文件。效果很好,请参见下文。
但是,我想向每个CSV文件添加一个新列,例如,每个文件中带有“日期”列并带有今天的日期。我的计划是将XLSX加载到一个Dataframe中,然后在写入CSV之前添加该列,但是我想知道是否存在一种更优雅的解决方案,因为某些Excel文件可以进入数百MB的空间?
def excel_to_csv(excel_file):
print("Converting to CSV")
with xlrd.open_workbook(excel_file) as wb:
sheets = wb.sheets()
for sh in sheets:
save_file = f'{os.path.splitext(excel_file)[0]}_{sh.name}.csv'
with open(save_file, 'w', newline="") as f:
c = csv.writer(f)
for r in range(sh.nrows):
print(sh.row_values(r))
c.writerow(sh.row_values(r))
谢谢
答案 0 :(得分:2)
只需:
from datetime import date
d=date.today().isoformat()
...并在CSV编写循环中执行:
for r in range(sh.nrows):
row=sh.row_values(r)
row.insert(0,d)
c.writerow(row)
或者显然,您可以在其他位置执行row.append(d)或row.insert(),具体取决于您希望日期位于哪一列。