シート編集(シート編集編)とシートからデータ取得編(シート読み込み編)の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でデータタイプを指定
##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を読み取る
#結合セルの値を読むには、左上のセルを指定すればよい