1

スクリプトの出力を次のようにしたい:

2   11
4   12
6   13
8   14
48  15

しかし、出力は次のようになります。

2   48
4   48
6   48
8   48
48  48

以下はコードです。誰かが私が間違っていることを助けてくれますか:

import xlwt
import xlrd
import sys ; sys.path 
#Create workbook and worksheet

wbk = xlwt.Workbook()
sheet = wbk.add_sheet('Data_1')#name of the sheet in which new data is there

row = 0

f = xlrd.open_workbook('Data_1.xls')#workbook from where data is extracted
g = xlrd.open_workbook('Data_2.xls')#workbook from where data is extracted

sheet1 = f.sheet_by_index(0)

sheet2 = g.sheet_by_index(0)

for i in xrange(5):
    temp = sheet1.row_values(i)
    print temp
    col = 0
    for element in temp:        
        sheet.write(i,col,element)
        col += 1
        i += 1

for j in xrange(5):
    temp1 = sheet2.row_values(j)
    print temp1
    col = 1
    for elements in temp1:
        sheet.write(j,col,element)
        col +=1
        j += 1

wbk.save('DATA.xls') #excel sheet name when saved in the folder
4

1 に答える 1

1

2 番目のループでは、変数名にタイプミスがあります。

for elements in temp1:

する必要があります

for element in temp1:

編集:あなたの例には冗長なコードもたくさんあります。私はあなたのプログラムをもう少し簡潔に書き直す自由を取りました(ただし、私はこれをテストしていないことに注意してください):

import xlwt
import xlrd
import sys
#Create workbook and worksheet

wbk = xlwt.Workbook()
dest_sheet = wbk.add_sheet('Data_1')

for sheet_idx in range(1, 3):
  sheet = xlrd.open_workbook('Data_%d.xls' % sheet_idx).sheet_by_index(0)

  for i in range(5):
    values = sheet.row_values(i)
    for idx, element in enumerate(values):
      dest_sheet.write(i, sheet_idx+idx, element)

wbk.save('DATA.xls')
于 2013-10-16T21:30:32.963 に答える