Ваш код имеет две проблемы.Во-первых, вы не копируете существующее содержимое wb_in
в wb_out
.Вы импортируете xlutils.copy
, но не используете его.
Во-вторых, вы записываете данные, всегда начиная со строки 0
.Это означает, что вы всегда будете перезаписывать то, что уже есть.
Следующее должно решить обе эти проблемы.Обратите внимание, что wb_out
устанавливается на копию wb_in
, и что при записи в ws_out
номер строки смещается на ws_in.nrows
, число строк, которые уже существовали в ws_in
:
from xlrd import open_workbook
from xlutils.copy import copy
wb_in = open_workbook('~/new.xls', 'r+')
ws_in = wb_in.sheet_by_index(0)
wb_out = copy(wb_in)
ws_out = wb_out.get_sheet(0)
f = open('~/count.txt', 'r+')
data = f.readlines()
for i in range(len(data)):
row = data[i].split()
for j in range(len(row)):
ws_out.write(ws_in.nrows + i, j, row[j].strip())
wb_out.save('~/new.xls')
f.close()