使用Python编写和修改现有工作簿

使用Python编写和修改现有工作簿,python,excel,pandas,overwrite,xlwings,Python,Excel,Pandas,Overwrite,Xlwings,我是Python新手,正在从事一个需要帮助的项目。因此,我试图修改现有的excel工作簿,以便比较股票数据。幸运的是,有一个在线程序检索了我需要的所有数据,我成功地提取了数据并将数据写入了一个新的excel文件。但是,目标是提取数据并将其放入现有的excel文件中。此外,我需要覆盖现有文件中的单元格值。我相信xlwings能够做到这一点,我认为我的代码是正确的,但我遇到了一个意外的错误。我得到的错误是: com_error: (-2147023174, 'The RPC server is un

我是Python新手,正在从事一个需要帮助的项目。因此,我试图修改现有的excel工作簿,以便比较股票数据。幸运的是,有一个在线程序检索了我需要的所有数据,我成功地提取了数据并将数据写入了一个新的excel文件。但是,目标是提取数据并将其放入现有的excel文件中。此外,我需要覆盖现有文件中的单元格值。我相信xlwings能够做到这一点,我认为我的代码是正确的,但我遇到了一个意外的错误。我得到的错误是:

com_error: (-2147023174, 'The RPC server is unavailable.', None, None)  
我想知道是否有人知道为什么会出现这个错误?还有,有人知道如何修复它吗?它能修好吗?我的代码错了吗?任何帮助或指导都将不胜感激。多谢各位

import good_morning as gm
import pandas as pd
import xlwings as xw

#import income statement, balance sheet, and cash flow of AAPL
fd = gm.FinancialsDownloader()
fd_frames = fd.download('AAPL')

#Creates a DataFrame for only the balance sheet
df1 = pd.DataFrame(list(fd_frames.values())[0])

#connects to workbook I want to modify
wb = xw.Book  (r'C:/Users/vince/OneDrive/Documents/Python/Project/spreadsheet.xlsm')

#sheet I would like to modify
sht = wb.sheets[1]

#modifies & overwrites values in my spreadsheet (this is where I get the commerror)
sht.range('M6').value = df1 

收到的错误消息元组指示您尝试连接的RPC服务器不可用。如果RPC服务器脱机,或者您的程序无法连接到RPC服务器所在的网络,则可能发生此故障

The RPC server is unavailable.
RPC代表远程过程调用。RPC服务器通常是另一台计算机,它位于您的网络或连接到的网络中的其他位置。通过RPC接口,您可以向服务器发送带有参数的函数请求,服务器将为您执行这些请求并返回适当的答案。它模拟计算机上的常规函数调用,不同之处在于这些函数调用是在远程RPC服务器上执行的

根据您在解释问题时所写的内容,我认为您根本无意联系远程服务器来执行必要的任务。我建议将试图连接到远程服务的代码删除或替换为在您的计算机上本地工作的代码

这一行指向一个目录结构,它引用一个名为OneDrive的目录。这是远程目录吗?尝试将您的spreadsheat放在您指定的文件夹中,运行您的程序的用户可以访问舒尔,而不是远程目录

#connects to workbook I want to modify
wb = xw.Book  (r'C:/Users/vince/OneDrive/Documents/Python/Project/spreadsheet.xlsm')
以下几行也暗示了与互联网的连接,仅凭词义即可。我不熟悉您正在使用的库,因此这可能只是一些奇怪的函数名称。我想说的是,我不是舒尔

#import income statement, balance sheet, and cash flow of AAPL
fd = gm.FinancialsDownloader()
fd_frames = fd.download('AAPL')

您的问题是程序无法访问目录中引用的OneDrive。这可能是由许多因素造成的。凭据不正确、OneDrive关闭或更简单OneDrive不允许从程序而不是用户进行访问。尝试下载您希望读写的文件,并将其保存到计算机上存储的目录中,然后将程序指向新目录,看看会发生什么。

谢谢您回答我的问题,因为我真的很困惑。我仍然感到困惑,因为我无意联系远程服务器,也不知道为什么会联系远程服务器。我一直在网上研究如何覆盖现有的xlsx或xlsm工作簿,但我找到的唯一解决方案是使用xlwings。尽管如此,我不知道是否可以用更好的函数替换代码。你有什么建议或想法吗?再次感谢您的帮助,请看@Nicholiae的回答。我还将扩展我的答案,指出代码中的问题行;)谢谢你的帮助。我接受了你的建议,把文件放在我电脑上的一个目录里。新的代码行如下所示:wb=xw.Book(r'C:/Users/vince/Project/Spreadsheet.xlsm')。然而,现在我得到了一个新的错误。新的错误状态为:com_error:(-2147352570,“未知名称”,无,无)。我不知道这个错误意味着什么,也无法在网上找到关于这个错误的更多信息。你知道这个错误是什么意思吗?所有内容都被正确引用和拼写。当您添加为您进行通信的程序时,云存储和计算机之间的通信有些复杂。可能会遇到很多问题,通常是将不正确的凭据硬编码到程序中,并且具有适当接收器的云(OneDrive)会将访问权限授予受信任的用户。安全措施防止程序和用户进行不受信任的访问。用户具有访问权限并不意味着同一系统上的程序将具有访问权限,因为安全措施将它们视为两个不同的用户访问权限。谢谢您的帮助。我接受了你的建议,把文件放在我电脑上的一个目录里。新的代码行如下所示:wb=xw.Book(r'C:/Users/vince/Project/Spreadsheet.xlsm')。然而,现在我得到了一个新的错误。新的错误状态为:com_error:(-2147352570,“未知名称”,无,无)。我不知道这个错误意味着什么,也无法在网上找到关于这个错误的更多信息。你知道这个错误是什么意思吗?所有内容都被正确引用和拼写尝试将文件与程序放在同一文件夹中,并将程序指向该文件。查看相同的错误是否仍然存在。你有任何导入模块吗?