【问题标题】:Python: Saving an Excel file with the current datePython:使用当前日期保存 Excel 文件
【发布时间】:2018-01-12 10:57:42
【问题描述】:

我正在尝试使用 Python 3.6 和 Datetime 模块将新的 Excel 文件与原始文件名和当前日期保存在同一文件夹中。

文件已保存,但当我打开创建的文件时,Excel 无法打开文件“AllData 2017_08_04.xlsm”,因为文件格式或文件扩展名无效。

如何让包含日期字符串的文件正确保存?

from datetime import datetime

os.chdir(r'\\URL\All Data Folder')
wb = openpyxl.load_workbook('AllData.xlsm')
datestring = datetime.strftime(datetime.now(), ' %Y_%m_%d')
wb.save('AllData' + datestring + '.xlsm')

【问题讨论】:

  • 如果你使用.xlsx 扩展会发生什么?宏可能会影响您想要的输出。
  • 我认为这就是问题所在。我刚刚尝试了自己的.xlsx 文件,它工作得很好。

标签: python excel datetime


【解决方案1】:

正如我在 cmets 中提到的,工作簿中可能嵌入了一些 VBA 代码 - 因此是 .xlsm 扩展名。

如果您不需要宏/VBA 代码,请尝试:wb.save('AllData' + datestring + '.xlsx')

此外,如果您查看load_workbook() 文档,则有一个keep_vba 参数。试试:

wb = openpyxl.load_workbook('AllData.xlsm', keep_vba=True)

【讨论】:

    【解决方案2】:

    这应该适用于您的问题。改用熊猫

    import pandas as pd
    from datetime import datetime
    
    #Use pandas to adress the issue
    
    os.chdir(r'\\URL\All Data Folder')
    wb=pd.read_excel(io=r"YOUR PATH\AllData.xlsm")#Fill in your path
    datestring = datetime.strftime(datetime.now(), ' %Y_%m_%d')
    
    wb.to_excel(excel_writer=r"YOUR PATH\{0}".format('AllData' + datestring + '.xlsm'))#Fill in your path
    

    如果这不起作用,请查看 this Question 应该可以回答您的问题,因为它是关于如何保存以 xlsm 结尾的 excel 文件

    【讨论】:

    • 欢迎您!如果对您有帮助,请将其标记为答案
    猜你喜欢
    • 2020-07-30
    • 2014-02-16
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多