首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python xlwings VBA问题

Python xlwings VBA问题
EN

Stack Overflow用户
提问于 2021-08-09 09:50:56
回答 1查看 34关注 0票数 0

我刚接触python-excel自动化。我做了一个从python运行的脚本,但是当我试图从excel运行它时,我得到了一些错误。

脚本类似于:

代码语言:javascript
复制
sheet1=pd.read_excel("xxx.xlsx",sheet_name="A", header=1,usecols=["d","e","f","m","n"]))
sheet1.dropna(subset=["f"], inplace=True)
sheet1=sheet1[~sheet1["f"].astype(str).str.startswith("A")]
column_name=list(sheet1["f"].unique())
    
def fct1():
   for index in range(len(column_name)):
        for element in sheet1.index:
            *do some things and append the results in a dictionary*

   ws = xw.Book('xxx.xlsx').sheets['B']
   for i in range(len(column_name)):
        *write the results*

在VBA中,我刚刚添加了:

代码语言:javascript
复制
Sub test()
    RunPython "import RoomData; RoomData.fct1()"
End Sub

你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-09 16:01:35

我发现了一个变通方法(不确定这是否是最好的选择)-我用另一种方法创建了数据帧,在我丢弃了不重要的列后,其余的都是一样的:

代码语言:javascript
复制
sheet = xw.Book('xxx.xlsm').sheets['A'].range((3, 4), (1000, 12)).value
sheet1 = pd.DataFrame(sheet, columns=xw.Book('xxx.xlsm').sheets['A'].range((2,4), (2, 12)).value)
sheet1.pop('D')
sheet1.pop('E')
sheet1.pop('H')
sheet1.pop('G')
sheet1.dropna(subset=["f"], inplace=True)  # delete lines where no info on "Tableau"
sheet1 = sheet1[~sheet1["f"].astype(str).str.startswith("A")]
column_name = list(sheet1["f"].unique())

def fct1():...
def fct2():...
def fct3():...

不过,如果有人有其他的想法,请不要犹豫:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68710060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档