【问题标题】:Writing and modifying an existing workbook using Python使用 Python 编写和修改现有工作簿
【发布时间】:2017-11-13 08:52:33
【问题描述】:

我是 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 

【问题讨论】:

    标签: python excel pandas overwrite xlwings


    【解决方案1】:

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

    【讨论】:

    • 当您添加程序为您进行通信时,云存储和计算机之间的通信有些复杂。可能会遇到很多问题,通常是不正确的凭据硬编码到程序中,并且具有适当接收器以显示访问权限的云 (OneDrive) 已授予受信任的用户。安全措施可防止程序和用户进行不受信任的访问。仅仅因为用户具有访问权限并不意味着同一系统上的程序将拥有它,因为它们被安全措施视为两个不同用户的访问权限。
    • 感谢您的帮助。我听取了您的建议,并将文件放在存储在我计算机上的目录中。新的代码行如下所示:wb = xw.Book(r'C:/Users/vince/Project/Spreadsheet.xlsm')。但是,现在我遇到了一个新错误。新错误状态:com_error: (-2147352570, 'Unknown name.', None, None)。我不知道这个错误是什么意思,也无法在网上找到很多关于该错误的信息。你知道这个错误是什么意思吗?一切都被正确引用和拼写
    • 尝试将文件放在与程序相同的文件夹中,并将程序指向该文件。看看同样的错误是否仍然存在。你也有导入模块吗?
    【解决方案2】:

    您收到的错误消息元组表明您尝试连接的 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')
    

    【讨论】:

    • 感谢您回答我的问题,因为我真的很困惑。我仍然感到困惑,因为我不是要联系远程服务器,也不知道为什么要联系远程服务器。我一直在网上研究如何覆盖现有的 xlsx 或 xlsm 工作簿,但我找到的唯一解决方案是使用 xlwings。话虽如此,我不知道我是否可以用更好的功能替换代码。你有什么建议或想法吗?再次感谢您的帮助
    • 查看@Nicoliae 的回答。我还将扩展我的答案以在您的代码中指出问题行;)
    • 感谢您的帮助。我听取了您的建议,并将文件放在存储在我计算机上的目录中。新的代码行如下所示:wb = xw.Book(r'C:/Users/vince/Project/Spreadsheet.xlsm')。但是,现在我遇到了一个新错误。新错误状态:com_error: (-2147352570, 'Unknown name.', None, None)。我不知道这个错误是什么意思,也无法在网上找到很多关于该错误的信息。你知道这个错误是什么意思吗?一切都被正确引用和拼写
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2017-10-26
    • 2011-02-13
    • 2016-03-14
    • 1970-01-01
    • 2017-12-26
    • 2013-04-03
    相关资源
    最近更新 更多