【python】PythonのExcel操作:データの読み書き
PythonのExcel操作:データの読み書き
Email:[email protected]
ただ記録としては、後で調べるのに便利なので、必ずしも実用的ではありません.使用するモジュール:xlrdとxlwtで、それぞれ読み取りと書き込みに使用されます.
1.excelテーブルを開く
data = xlrd.open_workbook('data.xls')
2.ワークシートの取得
table = data.sheets()[0]#インデックス順で取得
table = data.sheet_by_index(0)#インデックス順で取得
table = data.sheet_by_name(u'Sheet 1')#名前で取得
3.行全体と列全体の値(配列)を取得する
table.row_values(i)
table.col_values(i)
4.行数と列数の取得
nrows = table.nrows
ncols = table.ncols
5.循環ラインリストデータ
for i in range(nrows ):
print table.row_values(i)
セル#セル#
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
行列インデックスの使用
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
6.書き込みデータ
7.実践コード
Email:[email protected]
ただ記録としては、後で調べるのに便利なので、必ずしも実用的ではありません.使用するモジュール:xlrdとxlwtで、それぞれ読み取りと書き込みに使用されます.
1.excelテーブルを開く
data = xlrd.open_workbook('data.xls')
2.ワークシートの取得
table = data.sheets()[0]#インデックス順で取得
table = data.sheet_by_index(0)#インデックス順で取得
table = data.sheet_by_name(u'Sheet 1')#名前で取得
3.行全体と列全体の値(配列)を取得する
table.row_values(i)
table.col_values(i)
4.行数と列数の取得
nrows = table.nrows
ncols = table.ncols
5.循環ラインリストデータ
for i in range(nrows ):
print table.row_values(i)
セル#セル#
cell_A1 = table.cell(0,0).value
cell_C4 = table.cell(2,3).value
行列インデックスの使用
cell_A1 = table.row(0)[0].value
cell_A2 = table.col(1)[0].value
6.書き込みデータ
f =Workbook()
sheet = f.add_sheet(u'sheet3',cell_overwrite_ok=True) # sheet
sheet.write(0,0,100)
f.save(‘result.xls’)</span>
7.実践コード
# -*- coding:utf-8 -*-
import xlrd as excel
import collections as coll
from xlwt import *
#
def get_value():
try:
return excel.open_workbook(src).sheet_by_index(1)
except Exception,e:
print e
return 0
# SAO
po = []
def get_num_list( data ):
p = coll.OrderedDict()
typeCode = data.col_values(0)
for i in range(1, data.nrows):
if typeCode[i] not in p.keys():
p[typeCode[i]] = 1
po.append(i)
else:
p[typeCode[i]] = p[typeCode[i]] +1
return p
def calDis(data, p, po, k,result):
f =Workbook()
sheet = f.add_sheet(u'sheet3',cell_overwrite_ok=True) # sheet
m = -1
for (codeA, numA) in p.items():# A
m = m + 1
n = -1
for (codeB, numB) in p.items():# B
sum = 0
n = n + 1
if n == m :
continue
else:
if n > m:
for i in range(po[n],po[n]+numB):
for j in range(po[m],po[m]+numA):
if data.row_values(i)[j]>=k:
sum = sum + 1
else:
for i in range(po[m],po[m]+numA):
for j in range(po[n],po[n]+numB):
#print data.row_values(i)[j]
if data.row_values(i)[j]>=k:
sum = sum + 1
sheet.write(m+1,n+1,(float(sum*2)/(numA+numB)))
i = 1
for (codeA,k) in p.items():
#j = 1
sheet.write(0,i,codeA)
sheet.write(i,0,codeA)
i = i + 1
f.save(result)
if __name__ == '__main__':
# ...........
# 【 】
src = '09-result.xlsx'
# 【 】
k = 0.1
# 【 : _result.xls】
result = src.split('.')[0]+'_'+'result'+'.xls'
# ..........
data = get_value()
if(data==0):
print ' '
else:
p = get_num_list(data)
calDis(data,p,po, k,result)