每次运行 Python 脚本时如何创建新的 excel 文件?

时间:2021-06-27 15:22:19

标签: python excel

我有一个单一的源 excel 文件,我每个月都会使用 Python 清理该文件,以便仅与我的团队共享选定的数据。我想每个月创建一个新的 excel 文件,而不是每个月更新同一个文件。

Ex - 我已经运行了 Python 脚本并为六月创建了一个干净的文件。当它在 7 月份运行时,我希望创建一个新文件,而不是更新 6 月份的文件。

希望这是有道理的。提前致谢!

import os.path

from datetime import datetime

curr_date = datetime.strftime(datetime.now(), '%B')

save_path = 'T:/1. 2021 Timesheets n Bandwidth Tracker/Project Database/RA Copy/'

name_of_file = "PRO Project DB_2021_RA_" + curr_date.upper()

completeName = os.path.join(save_path, name_of_file+".xlsx") 

file1 = open(completeName, "w")

2 个答案:

答案 0 :(得分:0)

您能否分享将文件另存为 .xls 或 .xlsx 文件的代码行?

代码是否也在旧的 excel 文件中读取?

如果您打开 Python 脚本并按 Ctrl+F 输入文件名,那可能会有所帮助。

最简单的解决方案是每月手动更改文件名。只需在保存它的代码部分的文件名末尾添加:“Jul21”(下个月“Aug21”等)。如果旧文件加载到 Python 中,您还需要更改其中的文件名以匹配。

答案 1 :(得分:0)

我可能会为此推荐 pandas,但您需要为此使用第三方库,例如 xlsxwriteropenpyxl

如果您不想使用 Pandas,下面是一个使用库 xlsxwriter 的简单示例,但这取决于您的数据的格式。我也在使用 pathlib,因为它使一些事情变得更容易。

import xlsxwriter
from pathlib import Path
from datetime import datetime as dt

# Create a folderpath Path object.
output_folder = Path(r"T:/1. 2021 Timesheets n Bandwidth Tracker/Project Database/RA Copy")

# Set your timestamp variables.
today = dt.today()
this_month = today.strftime("%B")   # June
this_year = today.year              # 2021


# Create output path for excel file with month and year added.
full_xl_path = output_folder.joinpath(f"PRO Project DB_{this_year}_RA_{this_month}.xlsx")

# Create workbook and worksheet from given variables.
workbook = xlsxwriter.Workbook(full_xl_path)
worksheet = workbook.add_worksheet(name="Sheet1")


# Data sample
columns = ["employee", "date", "hours"]
data = [
    ["john", "2021-06-26", 8],
    ["dan", "2021-06-26", 8],
    ["joanna", "2021-06-27", 8],    
    ]

# For each row
for r in range(0, len(data) + 1):
    # If this is the firs row.
    if r == 0:
        # Write column headers.
        for h in range(len(columns)):
            worksheet.write(r, c, columns[h])    
    else:
        # Reset r to zero for indexing the data set.
        adjusted_r = r - 1
        for c in range(len(data[adjusted_r])):
            worksheet.write(r, c, data[c])
            
# Close workbook once complete.
workbook.close()