Возможно, я использую неправильный модуль записи Excel, но я пытаюсь извлечь данные с сервера и затем организовать их в Excel. Максимальное количество записей, которое я могу извлечь, составляет 500, на сервере 5000 записей, поэтому обычно я просто извлекаю 500 одновременно. Я начал изучать редактирование своего кода, чтобы он автоматически завершил процесс на всех 10 страницах и отправил все в Excel.
Код ниже - самый близкий к выполнению этой задачи. Он перебирает все страницы, я делаю печать, чтобы увидеть, как это происходит, но на функции возврата, которая затем отправляет ее в электронную таблицу, я вижу только последнюю страницу из 500 записей. Возможно ли то, что я пытаюсь сделать с помощью xlxswriter? Есть ли лучший вариант, или есть способ исправить мою программу для выполнения этой задачи?
Любая помощь будет принята с благодарностью. Код ниже - это не полный код, а часть, посвященная проблеме Excel.
import requests
from datetime import datetime, timedelta
import json
import time
import subprocess
import sys
import os
import xlsxwriter
def label_search(query):
company = input('\nEnter ID: ')
size = 500
offset = -501
position = '&offset='
api_call_response = requests.get(base_url +
query + company + size
+ position + str(offset),
headers=api_call_headers,
verify=False)
for value in api_call_response:
while offset <= 5000:
api_call_response
offset += 500
print(base_url +query + company + size + position + str(offset))
return(api_call_response).json()
def lookup():
try:
label = input("\nPlease provide label name: ")
label_info = label_search(label)
if len(label) == 0:
print("\nPlease provide a proper label name: ")
else:
search = label_info
display_wb_all(search)
except requests.exceptions.ConnectionError:
print_pause("\nCouldn't connect to server! Check Network")
menu()
def display_wb_all(search):
row = 0
col = 0
wbname = input('Name your workbook: ')
avwb = xlsxwriter.Workbook(wbname + '.xlsx')
wsname = avwb.add_worksheet('WorkSheet1')
cell_format = avwb.add_format()
cell_format.set_bg_color('silver')
cell_format.set_align('center')
cell_format.set_align('vcenter')
body_format = avwb.add_format()
body_format.set_align('center')
body_format.set_align('vcenter')
body_format.set_bg_color('white')
wsname.write('A1', 'Field name', cell_format)
wsname.write('B1', 'Field name', cell_format)
wsname.write('C1', 'Field name', cell_format)
wsname.write('D1', 'Field name', cell_format)
wsname.write('E1', 'Field name', cell_format)
wsname.write('F1', 'Field name', cell_format)
wsname.write('G1', 'Field name', cell_format)
wsname.write('H1', 'Field name', cell_format)
wsname.write('I1', 'Field name', cell_format)
wsname.set_column('A:A', 35)
wsname.set_column('B:B', 24)
wsname.set_column('C:C', 10)
wsname.set_column('D:D', 35)
wsname.set_column('E:E', 19)
wsname.set_column('F:F', 8)
wsname.set_column('G:G', 19)
wsname.set_column('H:H', 18)
wsname.set_column('I:I', 11)
for entry in search['items']:
siteName = entry['id']
s = entry['time']
a = int(s or 0)/1000.0
r = (datetime.datetime.fromtimestamp(a).strftime
('%Y-%m-%d %H:%M:%S'))
try:
state = entry['device'][0]['state']
except TypeError:
state = 'No Data Found'
try:
sim = entry['device'][0]['identifier']
except TypeError:
sim = 'No Data Found'
try:
platform = entry['device'][0]['mobile']
except TypeError:
platform = 'No Data Found'
try:
tech = entry['device'][0]['technology']
except TypeError:
tech = 'No Data Found'
bytestotal = entry['usage']['bytesTotal']
timestamp = entry['usage']['timestamp']
ts = int(timestamp or 0)/1000.0
x = (datetime.datetime.fromtimestamp(ts).strftime
('%Y-%m-%d %H:%M:%S'))
limit = entry['dataUsage']['limit']
row += 1
wsname.write(row, col, siteName, body_format)
wsname.write(row, col + 1, r, body_format)
wsname.write(row, col + 2, state, body_format)
wsname.write(row, col + 3, sim, body_format)
wsname.write(row, col + 4, platform, body_format)
wsname.write(row, col + 5, tech, body_format)
wsname.write(row, col + 6, bytestotal, body_format)
wsname.write(row, col + 7, x, body_format)
wsname.write(row, col + 8, limit, body_format)
avwb.close()
print(os.getcwd())