

`StyleFrame` を使ってエクセルに上書きせずに保存したいのですがうまく行きません。

試したことは `with StyleFrame.ExcelWriter(s_path,mode='a') as writer:` です。  
これではエラーになってしまって出来ませんでした。

教えていただけたら嬉しいです、よろしくお願いします。


CC BY-SA 4.0
2021-03-21T17:20:17.000
74804
2023-09-04T04:03:55.507
2021-03-22T00:03:32.693
3060
44429
question
python pandas
PythonのStyleFrameでエクセルに上書きせず追記できるようにしたい


styleframeはpandasとopenpyxlのラッパーらしいので、`ExcelWriter`はpandasを呼んでいると思われます。

[styleframe](https://styleframe.readthedocs.io/en/latest/index.html)

> A library that wraps pandas and openpyxl and allows easy styling of
> dataframes.

[Docs » Basic Usage
Examples](https://styleframe.readthedocs.io/en/latest/usage_examples.html)

> Creating ExcelWriter object:
[code]

>     ew = StyleFrame.ExcelWriter(r'C:\my_excel.xlsx')
>     sf.to_excel(ew)
>     ew.save()
>  
[/code]

* * *

一応pandasのExcelWriterには`mode=`パラメータは有りますが：

[pandas.ExcelWriter](https://pandas.pydata.org/docs/reference/api/pandas.ExcelWriter.html)

> class pandas.ExcelWriter(path, engine=None, **kwargs)
>
>   * path : str or typing.BinaryIO
>   * engine : str (optional)
>   * date_format : str, default None
>   * datetime_format : str, default None
>   * mode : {'w', 'a'}, default 'w'
>   * storage_options : dict, optional
>

* * *

以下のstyleframeの仕様文書にはExcelWriterの項目が無く、どのように呼び出しているか(パラメータをそのままpandasに渡しているか？)が不明です。：

[Docs » API Documentation »
styleframe](https://styleframe.readthedocs.io/en/latest/styleframe.html)

ソースコードを見ると`path`以外のパラメータは受け付けていないようですね。

[style_frame.py#L310](https://github.com/DeepSpace2/StyleFrame/blob/a553377dcb964dd4cbea1840d37103ea7588cb40/styleframe/style_frame.py#L310)

>
[code]

>     @classmethod
>     def ExcelWriter(cls, path):
>         return pd.ExcelWriter(path, engine='openpyxl')
>  
[/code]

なので`mode='a'`は使えないでしょう。

* * *

**代替案は、[read_excel()](https://styleframe.readthedocs.io/en/latest/styleframe.html?highlight=read_excel#styleframe.StyleFrame.read_excel)
で読み込んで、そのstyleframeにデータを追加してから
[to_excel()](https://styleframe.readthedocs.io/en/latest/styleframe.html?highlight=read_excel#styleframe.StyleFrame.to_excel)
を呼び出して書き出すことでしょう。**


CC BY-SA 4.0
2021-03-21T23:53:38.880
74805
2021-03-21T23:53:38.880
26370
74804
answer