# #python #excel #pandas #dataframe #google-bigquery
Вопрос:
Я написал скрипт на python для вывода данных из Bigquery в шаблон excel. Однако этот скрипт автоматически добавляет черную рамку ко всем диаграммам и удаляет все текстовые поля. Есть ли способ предотвратить это?
Установка:
import datetime
exec_start=datetime.datetime.now()
from google.cloud import bigquery
import pandas as pd
import pyarrow
import pydata_google_auth
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
credentials = pydata_google_auth.get_user_credentials(
['https://www.googleapis.com/auth/bigquery'],
)
from google.oauth2 import service_account
project_id = 'bigquery-analytics-workbench'
client = bigquery.Client(project = project_id, credentials=credentials)
Загрузить шаблон Excel:
file_path='Report - Feb 2021.xlsx'
book=load_workbook(file_path)
writer = pd.ExcelWriter(file_path, engine='openpyxl')
writer.book = book
sheet_name="Ranking"
sheet=book[sheet_name]
Загрузите запрос из текстового файла, запустите его в BigQuery и сохраните результат во фрейме данных:
with open('Query.sql') as q:
query = q.read()
new_query_job = client.query(query)
df=new_query_job.result().to_dataframe()
Удаление ранее существовавших данных в шаблоне excel:
row_start=2
col_start=14
for c_idx, col in enumerate(df.columns,col_start):
for r_idx in range(row_start,20001):
sheet.cell(row=r_idx, column=c_idx, value="")
Запишите фрейм данных в шаблон excel:
rows=dataframe_to_rows(df,index=False)
for r_idx, row in enumerate(rows,row_start):
for c_idx, col in enumerate(row,col_start):
sheet.cell(row=r_idx, column=c_idx, value=col)
Конец:
writer.save()
writer.close()
exec_end=datetime.datetime.now()
exec_time=exec_end-exec_start
print('exec_start:' str(exec_start) 'nexec_end:' str(exec_end) 'nexec_time:' str(exec_time))
Сценарий не предполагает никаких манипуляций с диаграммами или текстовыми полями. Может ли это произойти из-за некоторых настроек библиотеки openpyxl по умолчанию?
Комментарии:
1. Переформатируйте заголовок. т. е. «BigQuery в excel добавляет нежелательные черные строки» Коротко, кратко и об удаленных текстовых полях люди узнают об этой 2-й цели, читая основной вопрос. Я приду и помогу, как только освобожусь. 😉 Кроме того, уменьшите объем текста, если сможете. Меньше значит больше, наслаждайтесь!