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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

7483閲覧

python、openpyxl、作成したファイルを名前を付けて指定先へ保存したい

bsjbbztqfuzj11

総合スコア11

openpyxl

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/07 08:31

前提・実現したいこと

作成したエクセルファイルを、名前を付け、指定先へ保存したい。
記述方法ご存知の方いらしたら、ご教授していただけないでしょうか。
下記コードは同じフォルダに指定の名前でファイルが作成されてしまいます。

該当のソースコード

python3

1import openpyxl 2 3wb = openpyxl.Workbook() 4ws = wb.active 5ws['B2'] = 'test' 6 7wb.save('test.xlsx') 8

試したこと

ファイルダイアログというものを検索し下記サイトを参考にしたが、
ファイルの保存ではなく、ファイルの呼び出し方の記載で理解ができなかった。
https://pg-chain.com/python-filedialog

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
・ Windows 10
・ Python 3.8.0
・ openpyxl 3.0.3

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

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

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

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

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

meg_

2020/05/07 09:11

ファイル名を含めたパスを指定すれば良いのでは?
bsjbbztqfuzj11

2020/05/07 23:35

ファイル名と保存先を可変にしようと考えていました。
guest

回答1

0

ベストアンサー

名前を付けて保存 → Save As なので filedialog.asksaveasfilename() を使います。参照されたページに近い形で書くと、

Python

1from tkinter import filedialog 2import os 3 4ftype=[('Excelファイル', '*.xlsx')] 5idir=os.path.join(os.environ['USERPROFILE'], 'Documents') 6savefile=filedialog.asksaveasfilename(filetypes=ftype, initialdir=idir) 7if savefile!='': 8 wb.save(savefile)

のようになります。
ダイアログを「キャンセル」すると savefile 変数の中身は空文字列になりますので、必ず検査してください。

あと、参照されたページを見たあとの探し方には、次のようなものがあります。ご参考まで。

  • 「python filedialog 保存」で検索してみる
  • Python を引数なしで実行して出てくるコマンドラインで次のように打ってみて、tkinter.filedialog にどのような関数があるかあたりをつけてみる

Python

1from tkinter import filedialog 2dir(filedialog)

投稿2020/05/07 10:52

cugel

総合スコア220

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

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

bsjbbztqfuzj11

2020/05/07 23:34

cugelさん、どうもありがとうございました。 想定していた通りの動作です。 おっしゃる通り、Save As の形を探していたのですが、良く理解が出来ませんでした。 filedialog.asksaveasfilename() の使い方を勉強します。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問