質問編集履歴

2

2023/12/30:やりたい事を達成したコード作成できました。※該当コードにて更新させていただきます。

2023/12/30 04:14

投稿

dra_naka
dra_naka

スコア4

test CHANGED
File without changes
test CHANGED
@@ -23,41 +23,36 @@
23
23
  ### 該当のソースコード
24
24
 
25
25
  ```python
26
- import pandas as pd
27
- import matplotlib.pyplot as plt
28
- import numpy as np
29
26
  import datetime
30
- import yfinance as yf
27
+ import yfinance as yf#yahooファイナンスAPI
31
- from openpyxl import load_workbook
28
+ import openpyxl
32
29
 
30
+ # 転記先のExcelファイルパス
31
+ excel_path = 'C:\\Users\\nakagami\\亮太\\21_資産運用\\資産運用\\テスト_保有株ポートフォリオ.xlsx'
32
+ wb = openpyxl.load_workbook(excel_path)
33
+ ws=wb['保有']
34
+ c1=ws['B1']
35
+
36
+ #ステップ1:yahooファイナンス情報を取得
33
- # ターゲットを指定
37
+ #ターゲットを指定
34
38
  tickers = ["1655.T", "2002.T"]
35
39
 
36
- # 出力先のExcelファイルパス
40
+ #ステップ2:取得情報をExcelて転記
37
- excel_path = r'C:\Users\nakagami\亮太\21_資産運用\資産運用\テスト_保有株ポートフォリオ.xlsx'
38
-
39
- # 出力先のシート
40
- sheet_name = '保有'
41
-
42
- # データを収集して終値を転記
43
41
  for i, ticker in enumerate(tickers):
44
42
  data = yf.download(ticker, period='1d', interval="1d")
45
43
 
46
- # 日時データA1セルに転記
44
+ # 更新日を転記
47
45
  if i == 0:
48
- data.index = pd.to_datetime(data.index) # インデックスを日時型に変換
46
+ today1= datetime.date.today()
49
- date_data = data.index.strftime('%Y-%m-%d') # 日時データを文字列に変換
47
+ today2= "{0:%Y/%m/%d}".format(today1)
50
- date_data = pd.DataFrame(date_data, columns=['Date'])
48
+ c1.value = today2
51
- date_data.to_excel(excel_path, sheet_name=sheet_name, startrow=1, startcol=1, index=False)
49
+
52
-
53
- # 終値データをG7, G8, G9などに転記
50
+ # 終値データを指定セルに転記(G7から)
54
51
  closing_prices = data['Close']
55
- ws = load_workbook(excel_path)[sheet_name]
56
52
  for j, value in enumerate(closing_prices):
57
- ws.cell(row=6 + i, column=6 + j, value=value)
53
+ ws.cell(row=7 + i, column=7 + j, value=value)
58
54
 
59
- # 保存
60
- load_workbook(excel_path).save(excel_path)
55
+ wb.save(excel_path)
61
56
  ```
62
57
 
63
58
  ### 補足情報(FW/ツールのバージョンなど)

1

ライブラリにopenpyxlを追加しました。

2023/12/24 11:56

投稿

dra_naka
dra_naka

スコア4

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,7 @@
28
28
  import numpy as np
29
29
  import datetime
30
30
  import yfinance as yf
31
+ from openpyxl import load_workbook
31
32
 
32
33
  # ターゲットを指定
33
34
  tickers = ["1655.T", "2002.T"]
@@ -41,13 +42,22 @@
41
42
  # データを収集して終値を転記
42
43
  for i, ticker in enumerate(tickers):
43
44
  data = yf.download(ticker, period='1d', interval="1d")
45
+
44
46
  # 日時データをA1セルに転記
45
47
  if i == 0:
48
+ data.index = pd.to_datetime(data.index) # インデックスを日時型に変換
49
+ date_data = data.index.strftime('%Y-%m-%d') # 日時データを文字列に変換
50
+ date_data = pd.DataFrame(date_data, columns=['Date'])
46
- data.to_excel(excel_path, sheet_name=sheet_name, startrow=0, startcol=0, index=False)
51
+ date_data.to_excel(excel_path, sheet_name=sheet_name, startrow=1, startcol=1, index=False)
47
52
 
48
53
  # 終値データをG7, G8, G9などに転記
49
54
  closing_prices = data['Close']
55
+ ws = load_workbook(excel_path)[sheet_name]
56
+ for j, value in enumerate(closing_prices):
50
- closing_prices.to_excel(excel_path, sheet_name=sheet_name, startrow=6 + i, startcol=6, header=False, index=False)
57
+ ws.cell(row=6 + i, column=6 + j, value=value)
58
+
59
+ # 保存
60
+ load_workbook(excel_path).save(excel_path)
51
61
  ```
52
62
 
53
63
  ### 補足情報(FW/ツールのバージョンなど)