【PythonでExcel操作!】OpenPyXLライブラリを使ってPythonからエクセルファイルを操作しよう!〜VTuberと学習〜 【初心者向け】

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ส.ค. 2024

ความคิดเห็น • 58

  • @darkabsolute935
    @darkabsolute935 3 ปีที่แล้ว +1

    解説が尊い

  • @kani2735
    @kani2735 2 ปีที่แล้ว

    ちなみにこれで上記のws内のものを生成できる
    # 列、行の操作
    x_list = [] # A1からC10までの値を埋め込む
    for x in range(1, 11):
    x_list.append(f'A{x}')
    x_list.append(f'B{x}')
    x_list.append(f'C{x}')
    for x in x_list:
    ws2[x] = x # 終了
    # グラフの描画
    y_list = [] # B2からC13までの値を埋め込む
    for y in range(2, 14):
    y_list.append(f'B{y}')
    y_list.append(f'{y - 1}月')
    y_list.append(f'C{y}')
    y_list.append(random.randint(8000, 100000)) # 適当に値を書き込む
    ws3 = wb.create_sheet('new new sheet')
    for y in range(0, len(y_list), 4):
    ws3[y_list[y]] = y_list[y + 1]
    ws3[y_list[y + 2]] = y_list[y + 3] #終了

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      サンプルコード、ありがとうございます😊
      リストとforを使うと一気にデータを更新できますね!

  • @user-on3nz3nw4d
    @user-on3nz3nw4d 2 ปีที่แล้ว +1

    話し方が、かわいい。

  • @user-ko2xo9hl9k
    @user-ko2xo9hl9k ปีที่แล้ว +1

    クラスは「データ"クラス変数"と関数"メソッド"を整理した棚」っていう認識なんですが、合ってますか?

  • @user-zk5yf6bw7o
    @user-zk5yf6bw7o ปีที่แล้ว

    実務にpythonを絡めて自動化をしようと勉強を始めました
    Excelは頻繁に使うので是非活用したいところではありますが
    どうしても直接操作した方が早くないか…?と思う問題にぶつかります
    PythonでExcelを操作するユースケースを考えるところからですね!

  • @kaji877
    @kaji877 ปีที่แล้ว

    分かりやすくてとても勉強になります。
    入力内容を確認するために、最後に保存した後、エクセルファイルを開いて中身を確認しているのですがこの作業を何とかしたいです。
    最後の保存は自分で確認後やる感じにしたいのですが、エクセルの編集作業を実際にエクセルを開いてopenpyxlでやらせることはできるのでしょうか。
    そうなるとpuautoguiを使ってやるしかないんですかね?

  • @okadada7
    @okadada7 7 หลายเดือนก่อน

    質問ですが、グラフの文字サイズをタイトル、軸ラベル、凡例それぞれ変更する方法はありますでしょうか。いろいろなサイトをみて、部分的にはできても、全部がうまくいきません。例えばメモリの数値の横軸はおおきくなるのに縦軸がそのままとか。可能であれば開設動画とか検討いただけると助かります。

  • @user-jr7dj7wx5d
    @user-jr7dj7wx5d 3 ปีที่แล้ว +2

    初心者です。無料のオンラインのExcelは、使えないのですか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      オンラインのExcelについては考慮してませんでした💦
      OpenPyXLから出力したExcelファイルを一度、自分のPC内に保存してから、オンラインにアップロードすれば使えます!もしも、オンライン上(OneDrive上)のExcelファイルを、直接OpenPyXLで編集したり読み込んだりしたい場合は、OneDrive SDK for PythonというSDKが必要みたいですね! ( github.com/OneDrive/onedrive-sdk-python )
      OneDrive SDK for Pythonの使い方については、今後、解説動画をアップしようと思いますので、少々お待ちください😊

  • @masaki378481
    @masaki378481 ปีที่แล้ว

    いつも見させていただいてます!
    質問なのですが、sheet上にある結合セルをすべて解除する方法はありますでしょうか??
    よろしくお願いします!!!

    • @pythonvtuber9917
      @pythonvtuber9917  ปีที่แล้ว

      やったことはないのですが、こちらを参考にしてみてはいかがでしょうか?
      arakik10.hatenablog.com/entry/2020/08/18/160753

  • @user-hp1ht1em3e
    @user-hp1ht1em3e 3 ปีที่แล้ว +1

    わかりやすい解説ありがとうございます。
    load_Workbookのところで、"そんなファイルは存在しません"的な
    メッセージがでて読み込んでくれないのですが、保存場所とかが悪いのでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว

      ご質問、ありがとうございます!!
      load_workbook() の引数にファイル名だけ指定した場合は、PythonファイルとExcelファイルを同じフォルダ内に入れておけば読み込めます!説明が不足していてすみません😵
      Pythonファイルが置いてあるフォルダとは違うフォルダに置いてあるExcelファイルを読み込みたかった場合は、load_workbook() の引数にExcelファイルのフルパスを指定してください!
      フルパスを調べるには、以下の記事が参考になると思います!
      Windowsのファイルパスの調べ方▶︎ www.resume-next.com/easy_way_to_copy_file_paths/
      Macのファイルパスの調べ方 ▶︎ www.too.com/support/faq/mac/finder_os/24480.html

    • @user-hp1ht1em3e
      @user-hp1ht1em3e 3 ปีที่แล้ว

      @@pythonvtuber9917
      ありがとうございます!なんとかそこは解決できました。
      最後に一つだけ、
      openpyxlを使うと確実に
      OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
      とエラーを吐くのですがどう対策したらよいのでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว

      うーん、openpyxlでこのエラーを見たことがないので明確な回答ができないのですが、stackoverflowというQAサイトで同じエラー内容の投稿があって、そこには「PyCharmをアンインストール・再インストールしたら治ったよ」って書いてありました🤔
      ▶︎ stackoverflow.com/questions/59807112/oserror-winerror-193-1-is-not-a-valid-win32-application-in-python
      もしもエディターを使っていてエラーになった場合、念の為、エディターをアンインストール・再インストールしてみてはいかがでしょうか?
      また、この投稿の中に「64bit版のExcelがインストールされてないとダメだよ」みたいな書き込みもあるので、PCにインストールされているExcelアプリと、読み込もうとしているExcelファイルを作成したExcelアプリが64bit版なのか、も合わせて確認してみた方が良いかな、って思いました!

  • @user-es7dp6ym6g
    @user-es7dp6ym6g ปีที่แล้ว

    python: can't open fileとかNo such file or directoryなどのエラーが出てきます。。。
    新規のエクセファイルを作るやり方でやったのですが、どう対処すれば良いですか?
    (コードは動画と同じにして打ちました)

  • @TK-zx2jo
    @TK-zx2jo 2 ปีที่แล้ว

    データを抽出したいだけならpandasを使う方が早いのでしょうか??
    openpyxlってすごくもっさりしてる気がします。(自分のPCがへぼいだけかも?笑)

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +3

      テーブルデータであればPandasの方が簡単に取得できますね!!
      データがいろんなセルに点在してある場合などは、OpenPyXLの方が綺麗に抽出できるケースもあると思います😉

  • @user-bw7qf7ll1m
    @user-bw7qf7ll1m 2 ปีที่แล้ว +1

    コメント失礼します。初学者ですがサプーさんの動画を見て勉強してます!
    質問なのですが、体温記録等、毎日セルを1つずつずらしながら書き込んでいく…というのは、このopenpyxlで可能なのでしょうか?
    python上で体温を入力するとExcelに反映されるようなプログラムを組みたいのですが、調べたのですがよくわからなくて…お手隙の際にご回答頂ければ幸いですm(_ _)m

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +3

      ご質問ありがとうございます😊
      openpyxlを仕様するとPythonからExcelファイルへの書き込みが出来るので、毎日Excelファイルに体温の値を1行追加してこともできますよ😉 以下のようにmax_rowを使うと、現在のExcelファイルのシートの中で、データが存在する最大行(最終行)を取得できます!こちらを仕様されて + 1 行の部分に値を追記していけば良いと思います!
      ====================
      from openpyxl import load_workbook
      wb = load_workbook('体温.xlsx')
      ws = wb.worksheets[0]
      print(ws.max_row)

    • @user-bw7qf7ll1m
      @user-bw7qf7ll1m 2 ปีที่แล้ว

      @@pythonvtuber9917
      ご多用の中ご返信頂きありがとうございます!
      無事にプログラムを完成する事ができました。
      これからも動画楽しみにしています(^^)

  • @user-tomida-aichi
    @user-tomida-aichi 3 ปีที่แล้ว

    動画の内容から逸脱してるかもしれませんが申し訳ございません。
    Openpyxlをインポートしたプログラムをpy2exeでexe化しようとしても utils.pyで異常が発生しますが回避方法ありますか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      py2exeは使ったことがないので、ちょっと分からないです💦
      「utils.pyで異常が発生」というのは、エラーが出力されるのでしょうか?エラーが出るのであればエラー文で検索して、ネットで同じような事象が起きてる人を探してみると良いかもしれないです!
      お力になれず、申し訳ないです💦

  • @user-ek8qx1qr4k
    @user-ek8qx1qr4k 3 ปีที่แล้ว

    特定列の削除、特定範囲の削除は簡単にできると思いますが、3列目、7列目、9列目、など複数の特定列を消すにはどう書きますか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว

      ご質問、ありがとうございます😊
      「連続していない複数列の削除」の場合はfor文で1列づつ削除するしかないんじゃないかな、って思います!
      例えば、以下のようにしたら、1枚目のシートの3列目、7列目、9列目が削除されます😉 (1列ずつ削除するので、その度、列番号がズレるためにenumerateでリストのインデックスを取得して、削除したい列番号からインデックスを引いているところに気をつけてください)
      いかがでしょうか?
      ====== 以下 Pythonコード ======
      import openpyxl
      wb = openpyxl.load_workbook('LTX.xlsx')
      ws = wb.worksheets[0]
      for i, col_index in enumerate([3, 7, 9]): # リストで削除する列番号を指定
      ws.delete_cols(col_index - i)
      wb.save('LTX.xlsx')

    • @user-ek8qx1qr4k
      @user-ek8qx1qr4k 3 ปีที่แล้ว

      @@pythonvtuber9917
      返信わざわざありがとうございます🙏
      とても嬉しいです。なるほど、その方法もありますね。最近Python、特にopenpyxlを中心に勉強しているので動画が役に立ちます。
      1つ質問で、実験データを処理するプログラムを書いてるのですが、データが3万行あるため、実行まで10分かかってしまいます。そんなもんなんでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว

      「実行まで10分」というのは「読み込むだけで10分かかる」ということでしょうか?私もちょうどopenpyxlで10万件のデータを読み込む処理をしていますが、「行数10万、列数8、1シート」のBook読み込みが15秒ほどで完了します。列数やシート数にもよりますが、3万件で10分はちょっと長すぎかなぁ、って思いました😵
      もしもCSVファイルとしてでも扱えるデータであれば、Excelファイルを一度CSVに変換してから、Pythonで読み込んだ方が速いと思います!!

  • @user-mg2kl5lh2l
    @user-mg2kl5lh2l 2 ปีที่แล้ว +1

    Pythonの解説動画は出してる人ある程度いるし機械学習の解説動画出してる人もいるけど強化学習の解説動画出してる人日本だとほぼいないから出したら閲覧伸びるんじゃないかな
    伸びないから誰も出してないのかもしれんけど

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      コメントありがとうございます!
      アイシアさん( th-cam.com/channels/2lJYodMaAfFeFQrGUwhlaQ.html )が来年(2022年)は強化学習の動画をシリーズで出す予定だと仰ってた気がします😊

  • @user-dc1yt2fn8s
    @user-dc1yt2fn8s 3 ปีที่แล้ว +1

    初学者です質問失礼しますm(*_ _)m
    beautifulsoupで取りたいExcelデータのURLを取ってきて
    自分のパソコンのExcelに保存したいのですが
    どうしたら良いでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      ご質問、ありがとうございます😊
      モコモコさんが取得したいExcelのデータが載っているWebサイトを具体的に教えていただけたら、明確にご回答できるかと思うのですが、一旦、例として以下の対象サイトの「Excelテンプレートのダウンロード」から自分のパソコンにExcel保存するPythonのサンプルコードを書いておきますね!
      対象サイト ▶︎ www.microsoft.com/ja-jp/office/pipc/template/result.aspx?id=13281
      ===== 以下 pythonコード =====
      import requests
      from bs4 import BeautifulSoup
      res = requests.get('www.microsoft.com/ja-jp/office/pipc/template/result.aspx?id=13281')
      soup = BeautifulSoup(res.text, 'html.parser')
      # ダウンロードのaタグオブジェクト
      excel_a_tag = soup.find('a', class_='op-download-button')
      # ダウンロードURL
      download_url = excel_a_tag['href']
      # ファイルダウンロード
      res_file = requests.get(download_url)
      # PCに保存
      with open('ダウンロードファイル.xlsx', 'wb') as f:
      f.write(res_file.content)

    • @user-dc1yt2fn8s
      @user-dc1yt2fn8s 3 ปีที่แล้ว

      @@pythonvtuber9917
      長文失礼しますm(*_ _)m
      from bs4 import BeautifulSoup
      import requests
      url = "kantei.go.jp/jp/headline/kansensho/vaccine.html"
      r = requests.get(url)
      # 文字化けが酷いのでエンコードします。
      r.encoding = r.apparent_encoding
      # 引数に'lxml'を指定(なぜ必要かは、忘れちゃったww許して!!)
      soup = BeautifulSoup(r.text, 'lxml')
      # souの中身を見たいなら下記をコメントoffして!
      #print(soup)
      # soup.select("p.aly_tx_center > a")でcssのクラス指定後にaタグを取得
      # NOTE:例としてリストで吐き出さるので[0]を指定して開いてます。
      #   ここを工夫して取れるといけるかもです!!
      a_text = soup.select("p.aly_tx_center > a")[2]
      link = a_text.get("href")
      #print(link)
      root_url = 'kantei.go.jp'
      root_url +link
      'kantei.go.jp/jp/content/KOREI-vaccination_data2.xlsx'
      この1番最後のURLに私の抽出したいExcelデータがあります

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      詳細情報、ありがとうございます😊
      私のパソコン環境では以下のコードを実行することで「日別の実績」の「高齢者等」のExcelファイルが、実行Pythonスクリプトと同じフォルダに保存できます!
      (BeautifulSoupの第二引数が'lxml'だと私の環境では動きませんでした....)
      いかがでしょうか??
      ==== 以下Pythonコード ====
      import requests
      url = "kantei.go.jp/jp/headline/kansensho/vaccine.html"
      r = requests.get(url)
      r.encoding = r.apparent_encoding
      soup = BeautifulSoup(r.text, 'html.parser')
      a_text = soup.select("p.aly_tx_center > a")[2]
      link = a_text.get("href")
      root_url = 'kantei.go.jp'
      download_url = root_url + link
      res_file = requests.get(download_url)
      with open('日別の実績_高齢者等.xlsx', 'wb') as f:
      f.write(res_file.content)

    • @user-dc1yt2fn8s
      @user-dc1yt2fn8s 3 ปีที่แล้ว

      @@pythonvtuber9917
      ご親切にありがとうございます(´;ω;`)

    • @user-dc1yt2fn8s
      @user-dc1yt2fn8s 3 ปีที่แล้ว

      @@pythonvtuber9917
      たびたび質問して申し訳ございません💦
      soup = BeautifulSoup(r.text, 'html',ほげほげ)と有りますが
      コチラは何を指定しているのでしょうか?

  • @chroma_9
    @chroma_9 3 ปีที่แล้ว

    OpenPyXLのように階層の深いライブラリーの場合importで書くレベルについて悩みます
    個人的にimportは"import openpyxl as px"とだけ大きく宣言してそれぞれの関数の呼び出しで
    px.load_workbookとか
    px.styles.sideや
    px.chart.LineChart
    のように都度書くほうが好みなのですがこの動画のように宣言でもっと絞ったほうがメリット大きいでしょうか
    例えばチャートの形をBarChartからLineChartへ変更するだけでも宣言文を気にしなきゃいけないのが不安で。。。

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      ご質問ありがとうございます😊
      「インポート文をライブラリ内の関数まで絞った方がメリットが大きいのか?」という質問ですが、特に大きなメリットがあるわけではないです!この動画のコードはOpenPyXL公式のsampleコードを参考にしたために、このような記載にしました。
      個人的には「どのライブラリから呼び出されているものか」ということが該当コード上で明確にわかった方が良いと思っている派なので、Chromaさんのコードの書き方の方が好きです!!
      OpenPyXLに限っていうとWorkbookクラス・Worksheetクラスの属性に対する操作のコードが多く、ライブラリ内の関数を直接呼び出すことが少ないので特に問題ないかなぁ、って思ってこのようなコードにしましたが、確かにスタイル関連を操作したい場合は「import openpyxl as px」の方が使い勝手が良さそうですね!

    • @chroma_9
      @chroma_9 3 ปีที่แล้ว

      @@pythonvtuber9917 ご回答ありがとうございます。
      色々な表現方法がとれる場合プログラミング経験豊富な方の声が聞けるのは大変助かります。
      これからも頑張ってください

  • @ninja215daisuki
    @ninja215daisuki 2 ปีที่แล้ว

    From openpyxl import Workbook
    ModuleNotFoundError: No module named ‘openpyxl’
    この様な表示になり解決できません アドバイスをお願いします。
    pip install openpyxl は実行すみです

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +2

      ご質問ありがとうございます!!
      pip installをしている環境と、Pythonを実行している環境は同じでしょうか?
      例えば、Pythonの実行環境はcondaだけど、pipでインストールしている環境はPCのシステムインタープリター(デフォルトで入ってるもの)になっているなど、環境がズレている気がします😵

    • @ninja215daisuki
      @ninja215daisuki 2 ปีที่แล้ว

      返信ありがとうございます。
      確認すると実際 conda 環境でした。pycharmを使っています.
      Pythonを始める時の環境設定はどのような順番でやっていけば良いでしょうか,
      環境設定がわかりません,教えて下さい

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +1

      どのような設定をすべきかは、どのような環境にしたいか?によって異なります😉
      condaを使いたいのか?pyenvやvirtualenvを使いたいのか?直接入れたものを使いたいか?それによって異なります!
      conda環境と他環境が共存していると、うまく動かないことが多いのでどちらかを取捨選択して、その上で、PyCharm上でその環境のインタープリタを指定してあげたら良いと思います。
      インタープリタの設定はPyCharmの右下の「Python3.X」って書いてある部分をクリックすると「インタープリターの設定」メニューが出てくるので、そこから、さらにインタープリターが指定されているディレクトリ名の右側にある歯車ボタンを押して、追加してあげてください。

    • @ninja215daisuki
      @ninja215daisuki 2 ปีที่แล้ว

      @@pythonvtuber9917
      ありがとうございます。参考になりました。解決できそうです。

  • @jtkirk1029
    @jtkirk1029 2 ปีที่แล้ว +1

    from openpyxl.styles.borders import Border, Side を冒頭に実行しないと SideとBorderが使えませんでした。

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      情報ありがとうございます😊

  • @user-ri1fs7by6w
    @user-ri1fs7by6w 2 ปีที่แล้ว

    from openpyxl import Workbook
    from openpyxl.styles import Font
    wb = Workbook()
    ws = wb.active
    ws['A4'] = 10
    cel = ws['A4']
    cel.font = Font(size = 12, bold=True,color='FF0000')
    wb.save('output.xlsx')
    これを動かしましたがエラーがでました。
    内容です。
    from openpyxl import Workbook
    ModuleNotFoundError: No module named 'openpyxl'
    PS C:\Users\user> & C:/Users/user/AppData/Local/Programs/Python/Python310/python.exe c:/Users/user/Desktop/アプリケーション作成/エクセル/ex.py
    Traceback (most recent call last):
    File "c:\Users\user\Desktop\アプリケーション作成\エクセル\ex.py", line 1, in
    原因は何でしょうか

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      ご質問ありがとうございます!
      エラーメッセージはどのようなものですか?通常、「Traceback」の後にエラー箇所、今回だと「 line 1, in 」と出てきて、その後に原因が書いてあります。