在python中使用pandas数据框保存.xlsm(excel)文件的问题
Posted
技术标签:
【中文标题】在python中使用pandas数据框保存.xlsm(excel)文件的问题【英文标题】:Problem in saving .xlsm (excel) file using pandas dataframe in python 【发布时间】:2021-08-29 09:38:52 【问题描述】:我有两个包含不同信息的宏 excel 文件(.xlsm 文件)。我已经编写了基本上检查某些字段的python代码,如果该字段存在,则保存在一个文件夹中,否则如果该字段不存在,则保存在另一个文件夹中。我不希望从该 excel 文件中删除任何信息。我只是想如果该字段存在然后将原始文件保存到该文件夹中,否则将原始文件保存在其他文件夹中。代码没有给出任何错误。但是当我检查保存的文件时,它显示了这个错误。附上图片。
enter image description here
为了测试,附上输入文件here
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
谁能帮我解决这个问题???
【问题讨论】:
是否需要以任何方式修改文件? 【参考方案1】:您可以使用 pandas 中的 ExcelWriter
来做到这一点。
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()
【讨论】:
以上是关于在python中使用pandas数据框保存.xlsm(excel)文件的问题的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Pandas 数据框转换为 JSon 格式并通过使用 Python 添加其列名保存到 MongoDB 数据库中
如何在从 python 触发的电子邮件中将 pandas 数据框附加为 excel
在使用数字列表搜索列后返回数据框中的所有行 - Python/Pandas