python xlwings 抓取数据 excel sheet
python xlwings scraping data in put in excel sheet
我正在尝试使用 python 代码允许在 excel 中自动添加收获时间表的代码(效果很好)。
所以使用 xlwings,我添加了这段代码。它似乎工作正常,因为它需要一分钟才能工作,但 excel 文件中没有导入任何内容。
有人可以帮助我吗?
def timed():
# id of the API
headers = {
"Authorization": "Bearer " + "XXXXXXXX",
"Harvest-Account-ID": "XXXXX"
}
# define login infos
headers = headers
# define period for saving info about date of file update
current_time = datetime.datetime.now()
Year = current_time.year
Month = current_time.month
actualMonth = "{:02d}".format(Month) # mis au format 00 du mois
day = current_time.day
period = str(Year) + '-' + str(actualMonth) + '-' + str(day)
# connection to harvest
# premier jour de l'année
begin_period = str(Year) + '-' + '01' + '-' + '01'
url_address = "https://api.harvestapp.com/v2/time_entries?from=" + begin_period + "&per_page=100"
response = requests.get(url_address, headers=headers)
r = requests.get(url=url_address, headers=headers).json()
# add info about number of pages
try:
total_pages = int(r['total_pages'])
except:
total_pages = 1
timeentries = []
# add data to pandas dataframe
for page in range(0, total_pages):
pages = page + 1
url = "https://api.harvestapp.com/v2/time_entries?from=" + begin_period + "&page=" + str(
pages) + "&per_page=100"
response = requests.get(url=url, headers=headers).json()
test = response['time_entries']
for tet in test:
e = dict()
e['id'] = tet['id']
e['client'] = tet['client']['name']
e['user'] = tet['user']['id']
e['user_name'] = tet['user']['name']
e['ID_project'] = tet['project']['id']
e['ProjectName'] = tet['project']['name']
e['hours'] = tet['hours']
e['billable'] = tet['billable']
e['Billed'] = tet['is_billed']
e['spent_date'] = tet['spent_date']
try:
e['invoice'] = tet['invoice']['id']
except:
e['invoice'] = ''
try:
e['invoice_name'] = tet['invoice']['number']
except:
e['invoice_name'] = ''
timeentries.append(e)
# transfer to panda frame
df = pd.DataFrame(timeentries)
@xw.func
@xw.ret(index=False, header=True, expand='table')
def ret_data_frame():
return timed()
目标是更新 excel table...
中的所有时间表
欣
找到我的错误。
在第一个 def timed()
只需在最后添加:
return df
我正在尝试使用 python 代码允许在 excel 中自动添加收获时间表的代码(效果很好)。 所以使用 xlwings,我添加了这段代码。它似乎工作正常,因为它需要一分钟才能工作,但 excel 文件中没有导入任何内容。 有人可以帮助我吗?
def timed():
# id of the API
headers = {
"Authorization": "Bearer " + "XXXXXXXX",
"Harvest-Account-ID": "XXXXX"
}
# define login infos
headers = headers
# define period for saving info about date of file update
current_time = datetime.datetime.now()
Year = current_time.year
Month = current_time.month
actualMonth = "{:02d}".format(Month) # mis au format 00 du mois
day = current_time.day
period = str(Year) + '-' + str(actualMonth) + '-' + str(day)
# connection to harvest
# premier jour de l'année
begin_period = str(Year) + '-' + '01' + '-' + '01'
url_address = "https://api.harvestapp.com/v2/time_entries?from=" + begin_period + "&per_page=100"
response = requests.get(url_address, headers=headers)
r = requests.get(url=url_address, headers=headers).json()
# add info about number of pages
try:
total_pages = int(r['total_pages'])
except:
total_pages = 1
timeentries = []
# add data to pandas dataframe
for page in range(0, total_pages):
pages = page + 1
url = "https://api.harvestapp.com/v2/time_entries?from=" + begin_period + "&page=" + str(
pages) + "&per_page=100"
response = requests.get(url=url, headers=headers).json()
test = response['time_entries']
for tet in test:
e = dict()
e['id'] = tet['id']
e['client'] = tet['client']['name']
e['user'] = tet['user']['id']
e['user_name'] = tet['user']['name']
e['ID_project'] = tet['project']['id']
e['ProjectName'] = tet['project']['name']
e['hours'] = tet['hours']
e['billable'] = tet['billable']
e['Billed'] = tet['is_billed']
e['spent_date'] = tet['spent_date']
try:
e['invoice'] = tet['invoice']['id']
except:
e['invoice'] = ''
try:
e['invoice_name'] = tet['invoice']['number']
except:
e['invoice_name'] = ''
timeentries.append(e)
# transfer to panda frame
df = pd.DataFrame(timeentries)
@xw.func
@xw.ret(index=False, header=True, expand='table')
def ret_data_frame():
return timed()
目标是更新 excel table...
中的所有时间表欣 找到我的错误。 在第一个 def timed() 只需在最后添加: return df