質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1074閲覧

openpyxlを利用したエクセルファイルへの書き込み

2_34_koki

総合スコア67

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/10/17 07:18

openpyxlライブラリを使って、エクセルファイルの操作を行なっています。
エクセルファイルを開いた状態で下記のコードを実行しても、値の書き込みが反映されません。しかし、ファイルを閉じて再度エクセルファイルを開き直すと、書き込みした内容が反映されています。
エクセルファイルを開いて、コードを実装して、開いた状態のまま値の書き込みを確認したのですがどうすればよろしいでしょうか?
もし、openpyxlで不可能な場合別のライブラリを利用して構いません。

  • Python 3.8.2
  • openpyxl 3.0.9

python

1import openpyxl 2 3filepath = './sample.xlsx' 4wb = openpyxl.load_workbook(filepath) 5sh = wb['Sheet1'] 6 7sh.cell(3, 10).value = 300 //セルへの書き込みお 8wb.save('./sample.xlsx')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cx20

2021/10/17 09:35

基本的にExcelは同時編集を想定していないので厳しいかと思います。ブック共有使えば行けるかとも思いましたが、ダメそうでした。 ■ ブック共有が設定されたファイルをopenpyxlで書き込み→保存すると共有が解除されてしまう https://teratail.com/questions/245844
2_34_koki

2021/10/17 10:47

なるほど、ありがとうございます!!
guest

回答2

0

ベストアンサー

xlwings というライブラリで行うことができます。
https://docs.xlwings.org/ja/latest/index.html

投稿2021/10/17 20:11

etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

2_34_koki

2021/10/21 01:53

インタラクティブに操作することができました!!
guest

0

起動しているエクセルにCOM接続して、直接操作すればできそうですが、プログラムでセルに書込んでいる最中にエクセルを人が操作するとちょっまずいような気がします。

Python

1import win32com.client as com 2 3# エクセルに接続 4xl = com.Dispatch('Excel.Application') 5xl.Visible = True # ウィンドウを表示 6xl.DisplayAlerts = False # 警告を出さない 7 8# アクティブワークブック 9wb = xl.ActiveWorkbook 10 11if wb is not None: 12 # ワークシートを取得 13 #ws = wb.Worksheets("Sheet1") 14 ws = wb.ActiveSheet 15 16 # セルに数値を書込む 17 ws.Cells(3, 10).Value = 300 18 19 # オブジェクトを解放 20 cell = None 21 ws = None 22 23 input('確認:') 24 25 # ワークブックを保存 26 wb.Save() 27 wb = None 28 29else: 30 print('エクセルが起動していないか、ワークブックを開いていません') 31 32# エクセルは終了しない 33#xl.Quit() 34xl = None

投稿2021/10/17 12:58

編集2021/10/17 13:28
Bull

総合スコア986

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問