XLSX转CSV并添加列

时间:2018-12-11 13:09:57

标签: python python-3.x csv xlsx

我有一个功能,可以输入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))

谢谢

1 个答案:

答案 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(),具体取决于您希望日期位于哪一列。