Python xlWings从Range对象生成json-File



我想从Python xlWings Range对象生成一个json文件:

import pandas as pd
import numpy as np
import os
import xlwings as xw
wb=xw.Book(file)
ws=wb.sheets[0]
dr=ws.used_range.options(pd.DataFrame)
df=pd.DataFrame(data=dr)
jfile=df.to_json(orient='columns')

此时程序处于无限循环中:df = pd.DataFrame(数据=博士)

如果在dr=行末尾使用.value,则将dr设置为DataFrame,并且不需要使用df=pd.DataFrame(data=dr)

ws.used_range.options(pd.DataFrame)返回一个范围对象,因此尝试将其转换为DataFrame不太可能是您想要做的。这是我的测试数据的输出,其中使用的范围是A1:D11:

#Out[]: 
#                                    0
#0    (((<Range [Book1]Sheet1!$A$1>)))
#1    (((<Range [Book1]Sheet1!$B$1>)))
#2    (((<Range [Book1]Sheet1!$C$1>)))
#3    (((<Range [Book1]Sheet1!$D$1>)))
#4    (((<Range [Book1]Sheet1!$A$2>)))
#...
#39  (((<Range [Book1]Sheet1!$D$10>)))
#40  (((<Range [Book1]Sheet1!$A$11>)))
#41  (((<Range [Book1]Sheet1!$B$11>)))
#42  (((<Range [Book1]Sheet1!$C$11>)))
#43  (((<Range [Book1]Sheet1!$D$11>)))

如果使用ws.used_range.options(pd.DataFrame).value,则返回的数据类型为pd。DataFrame和then可以转换为json:

df = ws.used_range.options(pd.DataFrame).value
jfile=df.to_json(orient='columns')

请参阅转换器和选项的文档,这里有一个示例,使用.value

返回类型:

type(ws.used_range.options(pd.DataFrame))
#Out[]: xlwings.main.Range
type(ws.used_range.options(pd.DataFrame).value)
#Out[]: pandas.core.frame.DataFrame

最新更新