发布于2021-03-02 15:21 阅读(688) 评论(0) 点赞(17) 收藏(2)
0
1
2
3
4
5
6
我正在尝试使用openpyxl打开一个Excel文件,从其中一个工作表中的过滤数据创建一个数据框,然后将该数据写入另一个文件中的现有工作表,但是我一直收到错误消息,说该权限被拒绝,我认为是因为我在追加步骤中调用数据框的方式是在关闭文件或其他内容后以某种方式再次打开文件。因此,我想我想知道是否有某种方法可以将源数据的数据框放入Python,然后关闭该源文件,打开目标文件,然后将数据框写入其中。如果这没有道理,我深表歉意。我对Python很陌生。
我的代码在下面,欢迎任何建议或简化。
# Get latest source report using list
list_of_files_source = glob.glob(r'C:[my_path]/*')
latest_file_source = max(sorted(list_of_files_source, key = os.path.getctime))
# Load "Employee OT Data" sheet from workbook
file_source = pd.ExcelFile(latest_file_source)
df_source_Employee_OT = pd.read_excel(latest_file_source, 'Employee OT Data')
# Identify 6 most recent weeks (based on week ending date)
wk_end_source = pd.DataFrame(df_source_Employee_OT, columns = ['WEEK_ENDING']).drop_duplicates().apply(pd.to_datetime)
recent_wk_end_source = wk_end_source.sort_values(['WEEK_ENDING'], ascending=False).groupby('WEEK_ENDING').head(1)
recent_wk_end_source = recent_wk_end_source.head(6)
print(recent_wk_end_source)
# Filter source employee data for only 6 most recent weeks
df_source_Employee_OT = recent_wk_end_source.merge(df_source_Employee_OT, on='WEEK_ENDING', how='inner')
file_source.close()
# Make sure Excel instances are closed
import os
os.system("taskkill /f /im EXCEL.exe")
# Load destination workbook, targeting 'SOURCEDATA' sheet
dst = r'C:[my_other_path/Pivots.xlsm')
pivots = xw.Book(str(r'C:[my_other_path]/Pivots.xlsm'))
pivots_source_sheet = pivots.sheets['SOURCEDATA']
# Clear out old data from sheet
pivots_source_sheet.range('2:100000').api.Delete(DeleteShiftDirection.xlShiftUp)
# Save report and close
pivots.save(dst)
# Append with source data
with pd.ExcelWriter(dst, engine='openpyxl', mode='a') as writer:
df_source_Employee_OT.to_excel(writer, sheet_name=pivots_source_sheet, startrow = 2)
pivots.save(dst)
pivots.close()
这部分不需要,因为从未打开过excel应用程序,python只是从excel文件读取数据,而不是从软件本身读取数据。
import os
os.system("taskkill /f /im EXCEL.exe")
您可以将excel文件的名称直接传递给pandas.read_excel
和pandas.DataFrame.to_excel
。
查看有关pandas.read_excel和pandas.DataFrame.to_excel的官方文档。第一个返回给定excel文件名称的数据框,而第二个返回给定数据框的名称,并给定目标文件名将其保存到excel文件中。那应该是文件I / O所需的全部。如果这些功能由于某些原因无法使用,请附上您收到的错误消息。
0
1
2
3
4
5
6
7
作者:黑洞官方问答小能手
链接: https://www.pythonheidong.com/blog/article/869849/a620104f8cf81786e79a/
来源: python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!