実現したいこと
スプレッドシートのデータをexcelに貼りつけたい
初め、スプレッドシートをdataframeに格納してからエクセルに貼り付けのコードを書いてたのですがget_as_dataframeは取得してくる範囲設定が必須と書いてあり
私の場合データが増えていくので範囲指定ができず、シートごと取得する方法を探してのですがgspreadのcopyは新しいシートにコピーまたduplicate_sheet()もスプレッド自体にしかできなさそうで解決策ご存じの方ご教授お願いします。
スプレッドシートをdataframeに格納してからエクセルに貼り付けのコード
python
1import os 2import gspread 3from gspread_dataframe import get_as_dataframe, set_with_dataframe 4from oauth2client.service_account import ServiceAccountCredentials 5import pandas as pd 6import json 7import win32com.client 8import openpyxl as px 9import xlsxwriter 10from openpyxl.utils.dataframe import dataframe_to_rows 11from openpyxl.utils import get_column_letter 12import clipboard as clp 13import datetime 14now = datetime.datetime.now() 15path1 = "xxxxx.xlsm" 16scope = ['https://spreadsheets.google.com/feeds', 17 'https://www.googleapis.com/auth/drive'] 18 19 20credentials = ServiceAccountCredentials.from_json_keyfile_name('XXXXXXXXXXXX', scope) 21gc = gspread.authorize(credentials) 22#エクセルファイル読み込み 23wb = px.load_workbook(filename=path1, keep_vba=True) 24ws = wb['シート名'] 25 26wks = gc.open('xxxx').worksheet('xxxx1') 27#スプレッドシートデータをdataframeに取り込む 28spread = get_as_dataframe(wks,sheet_name='xxxx1',usecols=[3,4,5,6,7,8,9],skiprows=2, skipcol=3,evaluate_formulas=True) 29 30print(spread) 31 32rows = dataframe_to_rows(spread, index=False, header=False) 33 34#セルに値貼り付け 35for r_idx, row in enumerate(rows, start=5): 36 for c_idx, value in enumerate(row, start=2): 37 ws.cell(row=r_idx, column=c_idx, value=value) 38
回答1件
あなたの回答
tips
プレビュー