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

时间:2017-06-12 00:34:36

标签: python excel pandas overwrite xlwings

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

2 个答案:

答案 0 :(得分:0)

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

The RPC server is unavailable.

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

根据您在解释问题时所写的内容,我假设您根本不打算联系远程服务器来执行必要的任务。我建议删除或替换尝试通过在您的计算机上本地工作的代码连接到远程服务的代码。

此行指向一个目录结构,该结构引用名为OneDrive的目录。这是一个远程目录吗?尝试将您的spreadheat放在其他地方的文件夹中,运行程序的用户可以访问该文件夹,而不是远程目录。

#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')

答案 1 :(得分:0)

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