python - 在python中使用pandas数据框保存.xlsm(excel)文件的问题
问题描述
我有两个包含不同信息的宏 excel 文件(.xlsm 文件)。我编写了基本上检查某些字段的python代码,如果该字段存在,则保存在一个文件夹中,否则如果该字段不存在,则保存在另一个文件夹中。我不希望从该 excel 文件中删除任何信息。我只是想如果该字段存在然后将原始文件保存到该文件夹中,否则将原始文件保存在其他文件夹中。代码没有给出任何错误。但是当我检查保存的文件时,它显示了这个错误。附图片。
为了测试,输入文件附在此处
from pathlib import Path
import time
import parser
import argparse
import pandas as pd
import os
import warnings
warnings.filterwarnings("ignore")
parser = argparse.ArgumentParser(description="Process some integers.")
parser.add_argument("path", help="define the directory to folder/file")
parser.add_argument("--verbose", help="display processing information")
start = time.time()
def main(path_xlsm, verbose):
if (".xlsm" in str(path_xlsm).lower()) and path_xlsm.is_file():
xlsm_files = [Path(path_xlsm)]
else:
xlsm_files = list(Path(path_xlsm).glob("*.xlsm"))
df = pd.DataFrame()
for fn in xlsm_files:
all_dfs = pd.read_excel(fn, sheet_name=None, header=None, engine="openpyxl")
print(all_dfs)
list_data = all_dfs.keys()
all_dfs.pop("Lookups", None)
all_dfs.pop("Instructions For Use", None)
all_dfs.pop("Drop Down Boxes", None)
all_dfs.pop("ResolutionLookups", None)
for ws in list_data: # Looping for excel sheet
df1 = all_dfs[ws]
if df1.iloc[3, 0] == "Client Representative" and df1.iloc[4, 1] == "DATE" and df1.iloc[4, 3] == "SHIFT":
path_save = "C:\\Users\\ShantanuGupta\\Desktop\\Incoming\\Peel"
df.to_excel(os.path.join(path_save, f"{fn.name}"), index=False)
else:
path_save = "C:\\Users\\ShantanuGupta\\Desktop\\Incoming\\Resolution"
df.to_excel(os.path.join(path_save, f"{fn.name}"), index=False)
if __name__ == "__main__":
start = time.time()
args = parser.parse_args()
path = Path(args.path)
verbose = args.verbose
main(path, verbose) # Calling Main Function
print("Processed time:", time.time() - start) # Total Time
谁能帮我解决这个问题???
解决方案
你可以使用ExcelWriter
from pandas 来做到这一点。
import pandas as pd
writer = pd.ExcelWriter('<filename>.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='<sheet_name>)
workbook = writer.book
workbook.filename = '<filename>.xlsm'
writer.save()
推荐阅读
- javascript - Javascript 等于“0”返回真
- docker - Kubernetes中的Redis哨兵集群,哨兵无法到达redis master
- logging - IIS 10 的中央 W3C 日志记录和文件名
- django - 在不同的地方布置 django-markdownx 预览小部件
- html - 切换开关在调用函数时不显示动画
- android - 按钮卡在顶部
- reactjs - 其他函数内的reactjs es6调用函数抛出未定义的函数
- json - 我正在尝试查找两个站点是否具有 API/JSON 后端
- gitlab - 是否可以在 gitlab CI/CD 中手动选择部署到哪个环境?
- c++ - 执行在 push_back 处停止