我想从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