LoginSignup
0
1

More than 3 years have passed since last update.

PythonでExcelを操作する(1)

Last updated at Posted at 2020-11-08

本日の目的

  • 開いたExcelに書かれているデータを取得して別なExcelに保存する。

フォルダ構成

root/
 ├ code/
 │ └ 実行ソース達
 └ data/
   └ 開きたいExcel

ポイント的なアレ

  • Excelを操作する

import

  • openpyxl

とりあえずやってみる

  • Excel操作

    • エクセル開く
      • 既存ファイル例:wb = openpyxl.load_workbook(targetExcel, data_only=True)
      • 新規ファイル例:wb2 = openpyxl.Workbook()
        • targetExcelは対象エクセル(パス付き)
        • Excel内の計算結果がほしいのでdata_only = Trueを記載。
    • 保存
      • 例:wb2.save(newFileName)
        • newFileNameはファイル名
        • 既存ファイルの保存も同様で、同じ名前なら上書き保存、違う名前なら別名保存。
    • Excel内のSheetにアクセスする。
      • 例1:ws = wb[targetSheetName]
      • 例2:ws = wb.worksheets[0]
        • targetSheetNameはシート名
        • シート名が不明な場合でも、例2のようにシート番号指定でアクセス可能。

まとめ

  • 慣れるまでは苦戦しそうです。。がんばります。

参考

  • エクセルイメージおよび愚直なコードを載せておきます。

  • 「売上.xlsx」イメージ
    エクセルイメージ.png

書いたコード
import sys
import os
import openpyxl

# 実際の売上データではありません。
# 直書きはしたくない。
targetExcel = r"../data/売上.xlsx"
targetSheetName = "先月売上"
newFileName = "新.xlsx"
newSheetName = "test"
targetRow = 5
maxCellNum = 6

# エクセル開く
# data_only=Trueで式の結果がとれる。無いと式自体がとれる。
wb = openpyxl.load_workbook(targetExcel, data_only=True)

# エクセル内のデータにアクセスする
ws = wb[targetSheetName]

# 空のリストをよーい
datalist = []

# 開いたエクセルから対象行のデータをリストにつっこむ
for num in range(maxCellNum):
    datalist.append(ws.cell(targetRow, num+1).value)
    print(datalist[num])

# 新しいエクセルをよーい
wb2 = openpyxl.Workbook()
ws2 = wb2.worksheets[0]
ws2.title = newSheetName

# 元のエクセルと同じ位置にset
for num in range(maxCellNum):
    ws2.cell(targetRow, num+1).value = datalist[num]

# ほぞーん
wb2.save(newFileName)

追記:タイトル更新しました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1