LoginSignup
11

More than 3 years have passed since last update.

エクセル編集操作@python

Last updated at Posted at 2018-07-15

シート編集(シート編集編)とシートからデータ取得編(シート読み込み編)の2章立て.個人的にデータ分析はPandas,エクセル自体の編集はopenpyxl,読み込むだけならxlrdが有用な気がする.

Excelシート編集編

1. Pandasを用いる

エクセルの書式にこだわらない場合はpandasモジュールを用いる.まずworkbookを作成or読み込みする.そのあとは,登録したworkbook変数名で様々な操作ができる.

Workbook作成と読み込み


import pandas as pd
import numpy as np

#Workbook作成
book1 = pd.ExcelWriter('example.xlsx')                    

#excel作成----------------------------------------------
#まずDataFrame作成
data = pd.DataFrame({'A'    : 1.0,
                     'Name' : pd.Categorical(['A','B']),
                     'Data' : np.array([2,3])
                     })

#DataFrameをexcelに転写し,保存
data.to_excel(book1,'sheet1')
book1.save()                #保存


#Workbook読込----------------------------------------
#excelを読み込み
data2 = pd.read_excel('example.xlsx','sheet1',dtype = {'A':float,'Data':float,'Name':str})
#dtypeでデータタイプを指定                       

これで作成されたエクセルは以下の様になる.
image.png

2. Openpyxlを用いる

エクセルの書式をなるべく残したい場合にOpenpyxlは便利。しかしセルの結合には対応していないようで(Openpyxl: ver2.6)、結合セルはこのパッケージで保存した後もとに戻ってしまう(結合が解除されてしまう)。Openpyxlを使う場合はセルの結合は避けたほうがいいように思う。


import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation   #セルのデータ入力規則を挿入する場合につかうモジュール

#まずWorkbookをロードする。
wb = openpyxl.load_workbook('C:/Users/...../Sample.xlsx')  #基本
wb = openpyxl.load_workbook('C:/Users/...../Sample.xlsx',data_only = True)
# 値だけを読み取るモードでWorkbookをロードする場合.
# この場合関数のあるセルを読み取ると,関数ではなく結果だけを読み取る

#シートを読み込む。カッコは[]を用いる
ws = wb['Sheet1']

#セル値を読み込む
cellA = ws.cell(24,144)
Kin = cellA.value
# wsというクラスにcellAと、cellAというクラスにvalueがある。
# これで実際にセル(24,144)内にある値にアクセスできる(この場合Kinに格納される)

#全セル値を取得
cells = ws.values
list_cells = list(cells)
# まずセルの全情報を取得し、そののちにリスト化している

#入力規則(dv1)を作成する
dv1 = DataValidation(type="list", formula1='A,B,C', allow_blank=True)
dv1.add(cellA)
ws.add_data_validation(dv1)
# まずdv1を作成し、それをセルに適応する。その後ワークシートにも適応する必要がある。

cellA.value = 'ABC'

#保存する。
wb.save('C:/Users/...../Sample2.xlsx')
# 元ファイルにセルの結合があると、次ファイルを開けたときにエラーとなり、セルの結合が分解されていた。

Excelシート読み込み編

エクセルシートの中身を読み込むためのメモです.
import xlrdを用います.読み込むだけなら十分有用です.

workbookを読み込む


import xlrd
book1 = xlrd.open_workbook("")

worksheetを読み込む


sheet1 =book1.sheet_by_name("")

sheet内セル(2,4)のデータを読み込む


n1 = sheet1.cell_type(2,4)   #タイプを読み込む
n1 = sheet1.cell_value(2,4)  #値を読み込む
#読まれる値は,xlrdの場合セル3行目4列目(0から開始)となる.
#xlrdは、数式ではなくその結果を読み取る。
#セル内の式が"=14+15"なら29を読み取る
#結合セルの値を読むには、左上のセルを指定すればよい

参照
Pandas Documents
openpyxl
Excel読み込み
xlrdライブラリ

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
11