一応 xlwings 使ってみたけど エクセルを使う分ロードは遅めだし エラーが起きたら finally でちゃんとエクセルを終了するような処理を作っておかないとエクセルが開きっぱなしになるなど気を使わないといけない部分もあって そこまで使いやすいわけでもないです
ただのスクリプトならまだしも ウェブサーバで使うとまた別の問題もあったし
スレッド関係のものみたいで
CoInitialize has not been called.
というエラーがでます
import xlwings
import pythoncom
def edit_excel(path):
pythoncom.CoInitialize()
exapp = xlwings.App(visible=False)
book = exapp.books.open(path)
...
といった感じで pythoncom.CoInitialize() を実行する必要があるみたいです
各リクエスト中の処理で edit_excel を実行します
マルチスレッドで起きるらしいので ここだけは同時に実行されないようにしてるのかなって思ったのですけどスレッドを待機とかそういう系でもなさそう
COM の初期化みたいだけど結局よくわからなかった
こういうのがあると動かなくなったときの対処に困るしやっぱりエクセル使わずやりたいな