LoginSignup
0
1

More than 1 year has passed since last update.

エクセルの特定の表データを抽出してCSVファイルに保存

Posted at

目的

エクセルに存在する特定の表データのみを抽出してCSVファイルに保存する

前提条件

・抽出したい表の項目は以下の5項目(列)
 名前、体力、攻撃力、防御力、必殺技
・エクセルの1枚目のシートに対象の表が存在
・シートのA列に先頭の項目”名前”が存在
・シートの一番上にある表のみを抽出

import pandas as pd
import openpyxl

# データの項目は以下の5項目であることとシートのA列に"名前"が存在することが前提
# 名前、体力、攻撃力、防御力、必殺技

# データが存在するファイルを読み込む
wb = openpyxl.load_workbook("book.xlsx")

# データが存在するシートを読み込む ※一番のシートにデータが存在することを想定
ws = wb.worksheets[0]

# 行番号を検索により取得する
start_row = ''
for i, row in enumerate(ws.iter_rows(min_row=1), start=0):
    # A列(pythonでは0列目)を対象に、キーワード探索して、その行番号を取得する
    if row[0].value == '名前': # キーワードをシートの上の行(1行目)から探索
        start_row = i+1
        break # forループを抜ける

# エクセルシート内にある最終行を取得する
end_row = ws.max_row

# 表範囲を配列で取得する
data_rows = []
for rows in ws.iter_rows(min_row=start_row, min_col=1, #"名前は1列目にあるのでmin_col=1"
                        max_row=end_row, max_col=5):#"データは6個なのでmax_col=6"
    data_cols = []
    for cell in rows:
        data_cols.append(cell.value)
    data_rows.append(data_cols)

# pandasデータフレーム形式へ変換
df = pd.DataFrame(data_rows[1:], columns=data_rows[0])

# 行名を”名前”に置換する。
df.set_index("名前",inplace=True)

# csvファイルに出力
df.to_csv('df_con.csv', index=True, encoding='cp932')

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