[python xlwings在excel表格中放入剪贴数据

问题描述 投票:0回答:1

我正在尝试使用允许使用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()

Objectif是更新excel表中的所有时间表...

python-3.x excel-vba xlwings
1个回答
0
投票

Hin找到我的错误。在第一def timed()只需在末尾添加:返回df

© www.soinside.com 2019 - 2024. All rights reserved.